Jay Freestone
@jayfreestone.com
š¤ 63
š„ 218
š 46
A fullstack software engineer living & working in East London. jayfreestone.com
reposted by
Jay Freestone
Ahmad Shadeed
29 days ago
Working on my wife's portfolio website and solved a design problem by using CSS round(). This is a less used yet very useful function! Here is my article about it, and will update it soon with a new use case:
ishadeed.com/article/css-...
loading . . .
Better fluid sizing with round()
Using the round() function to get a more predictable fluid sizing.
https://ishadeed.com/article/css-round/
2
78
15
100% agree - we're way too quick to just throw more compute at problems:
yusufaytas.com/old-software...
loading . . .
Old Software Was Fast Because It Had No Choice | Yusuf Aytas
Modern infrastructure made waste too easy. Resource limits that started as temporary safety buffers can harden into requirements unless teams keep asking what the system is actually doing.
https://yusufaytas.com/old-software-was-fast-because-it-had-no-choice
28 days ago
0
1
0
reposted by
Jay Freestone
dan
about 1 month ago
100% agree. if i see āchoreā in commit log, im judging you
loading . . .
Stop Using Conventional Commits
Youāve almost certainly encountered Conventional Commits before. It may have reared its ugly head in the changelog of an open source project youāve used. It may have been the enforced commit format fo...
https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/
18
153
35
reposted by
Jay Freestone
dax
about 1 month ago
how to be good at your job - realize this one thing is actually made up of two separate things - realize instead of solving the direct problem you can solve a broader problem - instead of implementing thing, implement other thing that makes it easier to implement thing
3
84
12
Why not embrace the HATEOAS ethos and send down permissions, policies and actionable states from the API to the client, rather than duplicating or sharing code?
www.jayfreestone.com/writing/shar...
loading . . .
Ship the policy, not the code
A rule has to hold on both sides of an API boundary. Do you duplicate the code, share it, or let the backend drive the invariant?
https://www.jayfreestone.com/writing/share-the-policy-not-the-code/
about 1 month ago
0
1
0
If you're not sticking with traditional OOP and don't have a clear domain model, you might not need the repository pattern. Most of the JS/TS examples I've seen in the wild start out well-intentioned, but devolve into a mess:
www.jayfreestone.com/writing/you-...
loading . . .
You might not need⦠the repository pattern
Most codebases implement a cargo-cult 'repository pattern' that Evans and Vernon would shudder at. What actually gets shipped is usually a grab-bag collection of methods that provide no real abstracti...
https://www.jayfreestone.com/writing/you-might-not-need-the-repository-pattern/
about 2 months ago
0
0
0
reposted by
Jay Freestone
Neven Mrgan
2 months ago
A silly braindead pattern in modern app design: pseudo-āavatarsā you canāt customize, serving no purpose at all
6
161
7
Late to the party, but I just discovered the 'blocking=render' script attribute. Used judiciously, itās perfect for hiding components that depend on client-side JavaScript to render properly. Firefox is the only holdout, so support is already pretty good.
www.jayfreestone.com/writing/inte...
loading . . .
Intentionally blocking rendering with JavaScript
You nearly always want to put `<script>` tags in the `<head>` and mark them as non-blocking using either `async` or `defer`. However, there's an interesting use-case for actually *wanting* to block pa...
https://www.jayfreestone.com/writing/intentional-render-blocking-javascript/
2 months ago
0
2
0
The git integration in JetBrains IDEs really is unrivalled, so I'm excited to see Rebased gain some traction:
github.com/DetachHead/r...
loading . . .
GitHub - DetachHead/rebased: A git client based on the IntelliJ platform
A git client based on the IntelliJ platform. Contribute to DetachHead/rebased development by creating an account on GitHub.
https://github.com/DetachHead/rebased
2 months ago
0
0
0
reposted by
Jay Freestone
Artem Zakharchenko
6 months ago
The "asChild" prop is an accessibility nightmare. It makes it extremely easy to end up with things like <a type="button" role="menu">.
2
13
1
reposted by
Jay Freestone
Matteo Collina
6 months ago
š„ I've been debugging
@nodejs.org
performance for over a decade. The hardest part? Making sense of thousands of stack frames in a flamegraph. What if your AI assistant could do that for you? Today, we're releasing a new feature in `@platformatic/flame`. š§µ
2
17
3
reposted by
Jay Freestone
Lars
6 months ago
š npx unbarrelify At last, an easy way get rid of barrel files! Rewrites consumers to import directly from source, then deletes the barrels. Safe and fully automated, read all about it at
github.com/webpro/unbar...
3
109
24
reposted by
Jay Freestone
Kevin Powell
6 months ago
:nth-child() was upgraded (a long time ago, but no one seems to know about it)
youtube.com/shorts/rep-C...
loading . . .
nth-child was upgraded
YouTube video by Kevin Powell
https://youtube.com/shorts/rep-C_aIt2A?feature=share
7
73
16
reposted by
Jay Freestone
antirez
6 months ago
New blog post: Don't fall into the anti-AI hype.
antirez.com/news/158
20
274
79
reposted by
Jay Freestone
Ryan Carniato
9 months ago
Since people seem to interested in alternative Server Component architectures, might as well publish the source. These documents are rough, basically brain dumps. But I think thanks to Tanstack there is interest. "Isomorphic First Framework"
hackmd.io/@0u1u3zEAQAO...
loading . . .
Isomorphic First Framework - HackMD
Seeing the reception to SvelteKit Remote functions and Tanstack Start I realize I probably should codify the architecture we designed on stream.
https://hackmd.io/@0u1u3zEAQAO0iYWVAStEvw/SkM6lc_Cge
1
23
3
Missed that this was even coming, very neat!
react.dev/reference/re...
Solves a longstanding pain point with `useEffect`.
loading . . .
useEffectEvent ā React
The library for web and native user interfaces
https://react.dev/reference/react/useEffectEvent
10 months ago
0
0
0
reposted by
Jay Freestone
FranƧois Best
10 months ago
TIL: the "sync" in
@react.dev
's useSyncExternalStore isn't for "synchronise", it's for "synchronous". As: it's not for synchronising against an external store, It's for synchronously (ie: disabling concurrent features) updating against a store's changes. h/t
@tkdodo.eu
š¤Æ
6
48
10
reposted by
Jay Freestone
GraphQL
11 months ago
š Good news, everyone: GraphQL now supports OneOf input objects (aka input unions)! This long-requested feature is a small change that packs a big return for developers, making schemas more expressive and APIs easier to use. Read all about it š
graphql.org/blog/2025-0...
1
10
1
Zodās new Codecs feature looks pretty neat - easy bidirectional transformations:
colinhacks.com/essays/intro...
loading . . .
Introducing Zod Codecs
https://colinhacks.com/essays/introducing-zod-codecs
11 months ago
0
0
0
This looks pretty great:
remix.run/blog/rsc-pre...
loading . . .
React Router RSC Preview
React Router's preview support for React Server Components is now available
https://remix.run/blog/rsc-preview
about 1 year ago
0
2
0
reposted by
Jay Freestone
Yoav Weiss
about 1 year ago
If you ever wanted to use `sizes=auto` and were bummed out about Safari/Firefox support, Shopify now got a polyfill for ya!
github.com/Shopify/auto...
loading . . .
GitHub - Shopify/autosizes: A sizes=auto polyfill
A sizes=auto polyfill. Contribute to Shopify/autosizes development by creating an account on GitHub.
https://github.com/Shopify/autosizes
1
28
9
reposted by
Jay Freestone
Daniel Saewitz
about 1 year ago
@danabra.mov
just dropped a blog post in the comments where he points out why RSCs effectively solve the problems a number of disparate technologies were created to solve (but can fall short). High quality content.
3
32
6
reposted by
Jay Freestone
Sam Rose
over 1 year ago
This is delightful. I was totally expecting it to not work on mobile, but it does!
thirty-five.com/overengineer...
loading . . .
Overengineered anchor links - 35Ā®
Learn about the 'overengineered anchoring' pattern, a technique to improve the user experience of scrollable content.
https://thirty-five.com/overengineered-anchoring
0
17
1
reposted by
Jay Freestone
Technology Brobdingnagian
over 1 year ago
This is my entire life
28
1493
454
If youāre using React Hook Form, the new lenses addon makes it miles easier to create strongly typed reusable fields:
github.com/react-hook-f...
Got rid of so many generics with this, and everything is still typed properly.
loading . . .
GitHub - react-hook-form/lenses: The library's composable lens operations make it simple to work with deeply nested structures while maintaining type safety, leading to more maintainable and reusable ...
The library's composable lens operations make it simple to work with deeply nested structures while maintaining type safety, leading to more maintainable and reusable form components. - react-h...
https://github.com/react-hook-form/lenses
over 1 year ago
0
1
0
Funny considering that Go has the least expressive type system known to man, but this is amazing and unexpected news:
devblogs.microsoft.com/typescript/t...
loading . . .
A 10x Faster TypeScript - TypeScript
Embarking on a native port of the existing TypeScript compiler and toolset to achieve a 10x performance speed-up.
https://devblogs.microsoft.com/typescript/typescript-native-port/
over 1 year ago
1
2
0
reposted by
Jay Freestone
PaweÅ Grzybek
over 1 year ago
āIntroducing command and commandforā by
@keithamus.social
This is one of the most exciting additions to the web platform in a while, in my opinion. Opens many opportunities from the get-go, but also opens many good opportunities in the future.
developer.chrome.com/blog/command...
#html
#js
#web
loading . . .
Introducing command and commandfor Ā |Ā Blog Ā |Ā Chrome for Developers
Learn about the new capabilities for declarative behavior on buttons.
https://developer.chrome.com/blog/command-and-commandfor
0
6
1
reposted by
Jay Freestone
Lenz Weber-Tronic
over 1 year ago
This new library does seem interesting. A more powerful, easily chainable kind of class mixins...?
www.reddit.com/r/typescript...
loading . . .
From the typescript community on Reddit: Introducing Traits-TS: Traits for TypeScript Classes
Explore this post and more from the typescript community
https://www.reddit.com/r/typescript/comments/1j570q2/introducing_traitsts_traits_for_typescript_classes/
2
4
1
reposted by
Jay Freestone
Alem Tuzlak
over 1 year ago
I heard react-router v7 has middleware š
github.com/forge-42/bas...
loading . . .
Added middleware to base-stack by AlemTuzlak Ā· Pull Request #35 Ā· forge-42/base-stack
Description Added react-router middleware support to base-stack Type of change Please mark relevant options with an x in the brackets. Bug fix (non-breaking change which fixes an issue) New feat...
https://github.com/forge-42/base-stack/pull/35
0
10
3
This is a great tip to avoid having to set āas constā on a thousand separate string inputs in TypeScript:
pawelgrzybek.com/infer-type-o...
loading . . .
Infer type of a function argument as const in TypeScript | pawelgrzybek.com
TypeScript infers literal types from function arguments of primitive types and creates more general types for complex data structures. There may be a situation when you need a stricter type of inferen...
https://pawelgrzybek.com/infer-type-of-a-function-argument-as-const-in-typescript/
over 1 year ago
0
3
0
Didnāt know this: > For React refresh to work correctly, your file should only export React components.
github.com/vitejs/vite-...
Thereās an ESLint rule and everything:
github.com/ArnaudBarre/...
loading . . .
vite-plugin-react/packages/plugin-react at main Ā· vitejs/vite-plugin-react
The all-in-one Vite plugin for React projects. Contribute to vitejs/vite-plugin-react development by creating an account on GitHub.
https://github.com/vitejs/vite-plugin-react/tree/main/packages/plugin-react#consistent-components-exports
over 1 year ago
0
2
0
reposted by
Jay Freestone
Mark Erikson
over 1 year ago
Great post today from a former NYT dev who traced the history of the widespread `useIsomorphicLayoutEffect` snippet back through multiple libs... and identified "a React-Redux maintainer" as the main source that everyone copied. Uh. Hi. Yes. That'd be me :)
smoores.dev/post/no_such...
loading . . .
smoores.dev - Thereās no such thing as an isomorphic layout effect
Thereās something off about the most popular approach to quieting Reactās warnings about using layout effects during server-side rendering. Letās break down why the warning exists, and when it really ...
https://smoores.dev/post/no_such_thing_isomorphic_layout_effect/
1
28
3
reposted by
Jay Freestone
CSS by T. Afif
over 1 year ago
š” CSS Tip! Save this one line of code for the future!
css-tip.com/center-upper...
No more hacky code trying to remove those spaces above and below an uppercase text. You can easily have a perfect centering for the text!
#CSS
5
134
21
reposted by
Jay Freestone
Dominic Farolino
over 1 year ago
š¢ We're finally looking to ship Observables in Chrome!! It's been a long time comingāmany thanks to all in the community for the great feedback and help along the way!! Especially
@benlesh.bsky.social
,
@keithamus.social
,
@domenic.me
,
@jordan.har.band
& more! š
groups.google.com/a/chromium.o...
4
117
30
reposted by
Jay Freestone
Artem Zakharchenko
over 1 year ago
Got this neat suggestion during the Vitest workshop this week. Wen can technically use `
expect.fail
` in "onUnhandledRequest" to make MSW actually fail the tests where unhandled requests happen. This isn't something I recommend as of now but an interesting idea.
2
4
1
reposted by
Jay Freestone
Syntax
over 1 year ago
www.youtube.com/watch?v=P_et...
loading . . .
Standard Schema: The Universal JavaScript Data Interface
YouTube video by Syntax
https://www.youtube.com/watch?v=P_etHPMftyY
0
3
1
reposted by
Jay Freestone
Tyler Sticka
over 1 year ago
Iāve avoided `text-align: justify` for years. Do modern
#CSS
properties unlock its potential?
cloudfour.com/thinks/justi...
#Typography
#WebDesign
#WebDev
loading . . .
JustifiedĀ Text: Better Than Expected?
Do new CSS properties make justified text with automatic hyphenation more viable?
https://cloudfour.com/thinks/justified-text-better-than-expected/
4
35
12
Late to the party but this was a fascinating listen:
podcasts.apple.com/gb/podcast/8...
Wild to think that at this scale it was cheaper to just rewrite Webpack in Rust.
loading . . .
860: Module Federation Microfrontends with ByteDanceās Zack Jackson
Podcast Episode Ā· Syntax - Tasty Web Development Treats Ā· 13/12/2024 Ā· 1h 11m
https://podcasts.apple.com/gb/podcast/syntax-tasty-web-development-treats/id1253186678?i=1000680260712
over 1 year ago
0
1
0
reposted by
Jay Freestone
Josh W. Comeau
over 1 year ago
š A long-requested CSS feature is the ability to transition height between a known value (`height: 20rem`) and a derived one (`height: auto`). A new global CSS property makes this possible now. š html { interpolate-size: allow-keywords; } More info in thread š§µ
loading . . .
6
319
56
Didnāt realise you could embed 1Password app URLs in env files and load values via the CLI š:
nshipster.com/1password-cli/
loading . . .
op run
.env files can create friction in development workflows ā especially as teams and projects grow over time. If youāre feeling this pain, the 1Password CLI (op) might be just what you need.
https://nshipster.com/1password-cli/
over 1 year ago
0
1
0
reposted by
Jay Freestone
Matt Pocock
over 1 year ago
Node.js now supports TypeScript. Here's everything you need to know:
www.totaltypescript.com/typescript-i...
loading . . .
Node.js Now Supports TypeScript By Default
TypeScript is coming to Node 23. Let's break down what that means.
https://www.totaltypescript.com/typescript-is-coming-to-node-23
9
330
91
Love how flexible Vitest is. Hooks & lazy fixtures make it very easy to piece together stuff like a per-suite `--bail`.
over 1 year ago
0
1
0
Neat seeing subpath imports used in the wild:
storybook.js.org/blog/compone...
loading . . .
Component testing RSCs
Fully test React Server Components in the browser, fast
https://storybook.js.org/blog/component-testing-rscs/
over 1 year ago
1
1
0
It's kind of wild that the default GraphQL client codegen setup (client-preset) generates a massive mapping of operations which gets shipped wherever you ship your client:
the-guild.dev/graphql/code...
Provided solutions are buggy, slow or both. Lots of issues like this:
github.com/dotansimha/g...
loading . . .
Cloud Security Alliance Star Level One BadgeGitHubDiscord
https://the-guild.dev/graphql/codegen/plugins/presets/preset-client#reducing-bundle-size
over 1 year ago
1
0
0
Spent ages trying to get the correct types for inherited static methods in TypeScript. This worked in the end:
github.com/microsoft/Ty...
Weird that it doesn't seem to have first-class support.
over 1 year ago
0
0
0
The VSCode testing extension landscape is rough. Both the official Vitest and Playwright extensions are extremely buggy, and come with all kinds of weird behaviour.
over 1 year ago
1
0
0
Years on, and the JavaScript module ecosystem remains an absolute nightmare (CJS/ESM, Node and bundlers).
about 3 years ago
1
0
0
Big fan of using ESLint to impose restrictions on module/file imports, especially in today's landscape of mixing server/client/infrastructure code:
https://github.com/import-js/eslint-plugin-import
Helps keep everything clean, and ensures new (and old!) dev's don't foot-gun themselves.
about 3 years ago
0
0
0
LSP support in JetBrains IDEs is landing:
https://blog.jetbrains.com/idea/2023/06/intellij-idea-2023-2-eap-7/
Super excited by the move towards standardisation. Hopefully this means we can get rust-analyser support soon š¤
about 3 years ago
1
1
0
Great that grouped log output has finally landed in Turborepo š„³ Pulling apart CI output when each taskās output is mixed can be a nightmare.
https://github.com/vercel/turbo/pull/3916
about 3 years ago
0
0
0
Load more
feeds!
log in