Jay FreestoneJay Freestone
  • Feed
  • Readme
  • GitHub
  • Bluesky
  • RSS

I’m Jay, a product engineer based in East London. A polyglot at heart, I'm a Rust lover, a Go skeptic and a TypeScript apologist. Right now I’m helping shape the future of procurement software at Omnea.

  • Link•May 2, 2026

    GitHub's Ace with Maggie Appleton →

    GitHub’s had a rocky time lately, but Maggie Appleton’s talk at the AI Engineer conference was inspiring.

    Whether Ace itself takes off or not, I think GitHub are on the money here with where we’re headed.

  • Writing•Mar 3, 2023

    Progressive enhancement options for traditional server-rendered sites

    What’s the best way to progressively enhance a traditional server-rendered application with client-side JavaScript in 2023? Despite their glacial adoption, web components remain the closest we have to a platform-native solution.

  • Writing•Jan 29, 2023

    Stubbing GraphQL using Playwright

    A more ergonomic solution to stubbing out multiple GraphQL responses using Playwright.

  • Writing•Jan 24, 2023

    Locking body scroll for modals on iOS

    Revisiting old solutions for preventing background scrolling from within modal dialogs & overlays.

  • Writing•Aug 22, 2022

    Leveraging extends to infer return types

    In many statically typed languages, once we accept a generalised interface as a parameter we lose the ability to retrieve concrete values from our return type. Not so in TypeScript.

  • Writing•Aug 9, 2022

    Defining 'integration' tests

    What is an integration test? Everyone uses the term, but few seem to agree on the definition. Does the awkward filling of the testing pyramid still have value today, or is it too murky to be of real value?

  • Writing•Mar 28, 2022

    An Opinionated Guide to Unit Testing

    A language-agnostic guide on how to write maintainable, loosely-coupled unit tests which provide confidence and reduce fragility.

  • Writing•Jan 20, 2022

    Frontend Predictions for 2022

    Thoughts on what we might see in the coming year, including the return of micro-frontends, functional JavaScript & the demise of the Jamstack as we know it.

  • Writing•Dec 22, 2021

    Wrapping text inside an SVG using CSS

    Using two SVGs and shape-outside to wrap text inside a shape.

  • Writing•Dec 12, 2021

    Stubbing GraphQL using Cypress

    A more ergonomic solution to stubbing out multiple GraphQL responses using Cypress.

  • Writing•Sep 4, 2021

    Avoiding FOUT with Async CSS

    Fighting blocking resources and the fabled flash-of-unstyled-text with Adobe Fonts.

  • Writing•Aug 11, 2021

    The jest.mock() escape hatch

    Mocking concrete dependencies is a code-smell.

  • Writing•May 25, 2021

    Follow the Grain

    Spend less time trying to fix things, and more time trying to understand them.

  • Writing•Mar 23, 2021

    Cutouts with CSS Masks

    Creating a button with a notch cut out using composited CSS masks.

  • Writing•Dec 31, 2020

    Bulletproof flag components

    A resilient take on a flag-like media object.

← NewerPage 2 of 3Older →

Jay Freestone / mail@jayfreestone.com

Last Updated Oct 18, 2026