Shopify Engineering

Monte Carlo Simulations: Separating Signal from Noise in Sampled Success Metrics

Monte Carlo Simulations: Separating Signal from...

Usually, when you set success metrics you’re able to directly measure the value of interest in its entirety. For example, Shopify can measure Gross Merchandise Volume (GMV) with precision because...

Monte Carlo Simulations: Separating Signal from...

Usually, when you set success metrics you’re able to directly measure the value of interest in its entirety. For example, Shopify can measure Gross Merchandise Volume (GMV) with precision because...

React Native Skia: A Year in Review and a Look Ahead

React Native Skia: A Year in Review and a Look ...

With the latest advances in the React Native architecture, allowing direct communication between the JavaScript and native sides, we saw an opportunity to provide an integration for Skia, arguably the...

React Native Skia: A Year in Review and a Look ...

With the latest advances in the React Native architecture, allowing direct communication between the JavaScript and native sides, we saw an opportunity to provide an integration for Skia, arguably the...

Migrating our Largest Mobile App to React Native

Migrating our Largest Mobile App to React Native

In 2020, we announced that React Native is the future of mobile at Shopify. As part of that journey, we’ve been migrating Shopify Mobile (our largest app at 300 screens per platform)...

Migrating our Largest Mobile App to React Native

In 2020, we announced that React Native is the future of mobile at Shopify. As part of that journey, we’ve been migrating Shopify Mobile (our largest app at 300 screens per platform)...

Optimizing Ruby’s Memory Layout: Variable Width Allocation

Optimizing Ruby’s Memory Layout: Variable Width...

Shopify is improving CRuby’s performance in Ruby 3.2 by optimizing the memory layout in the garbage collector through the Variable Width Allocation project.

Optimizing Ruby’s Memory Layout: Variable Width...

Shopify is improving CRuby’s performance in Ruby 3.2 by optimizing the memory layout in the garbage collector through the Variable Width Allocation project.

Year in Review 2022: Tenderlove's Ruby and Rails Reflections and Predictions

Year in Review 2022: Tenderlove's Ruby and Rail...

Senior Staff Engineer and Rails core team member Aaron Patterson recaps his favourite Ruby and Rails updates of 2022 and some predictions (okay, so maybe it’s more of a wish...

Year in Review 2022: Tenderlove's Ruby and Rail...

Senior Staff Engineer and Rails core team member Aaron Patterson recaps his favourite Ruby and Rails updates of 2022 and some predictions (okay, so maybe it’s more of a wish...

Automatically Rotating GitHub Tokens (So You Don’t Have To)

Automatically Rotating GitHub Tokens (So You Do...

We encountered a problem that lives in the gap between two tried-and-true GitHub authentication methods: personal access tokens and built-in authentication. Our solution? Build a system to automatically rotate GitHub access tokens....

Automatically Rotating GitHub Tokens (So You Do...

We encountered a problem that lives in the gap between two tried-and-true GitHub authentication methods: personal access tokens and built-in authentication. Our solution? Build a system to automatically rotate GitHub access tokens....