---
title: "Shopify"
description: "Global commerce platform powering millions of businesses with essential infrastructure and innovative engineering solutions."
---

# Shopify
> Global commerce platform powering millions of businesses with essential infrastructure and innovative engineering solutions.

## Articles

### [Spin Cycle: Shopify’s SFN Team Overcomes a Cloud-Development Spiral](https://yomu.fyi/post/spin-cycle-shopify-s-sfn-team-overcomes-a-cloud-development-spiral.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Aug 4, 2022

Shopify’s Fulfillment Network (SFN) worked to run its monolithic Rails application in Spin, a cloud-based development tool that provides on-demand Kubernetes containers instead of local service environments. Because SFN glues together Shopify and many external services, the team had to decide whether to run, mock, or share each dependency, while frequent changes to SFN, Spin, and those dependencies created regressions. The three-engineer team identified a human feedback dynamic: painful Spin experiences discouraged adoption, which allowed more Spin-specific breakage, while regular use could expose regressions before merge. To break that spiral, the team prioritized basic functionality for common validation flows, fixed disruptions there, and asked developers to use Spin daily and add missing capabilities; the intended outcome was a self-reinforcing “Loop of Happy Equilibrium,” though the transition is described as a hypothesis.


### [Mastering React’s Stable Values](https://yomu.fyi/post/mastering-react-s-stable-values.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Aug 2, 2022

React stable values are values, often returned by hooks, that retain the same value across renders, and the post explains why their identity matters in effects, callbacks, memoization, and component rendering. useState and useReducer update functions and useRef objects are stable, while array literals, object literals, and anonymous functions are recreated on each render; useCallback and useMemo can produce stable values under appropriate dependencies. Unstable dependencies prevent useEffect behavior from remaining limited to intended changes and stop useCallback and useMemo cached results from being reused, while an unstable callback passed to useFocusEffect causes repeated unsubscribe and resubscribe cycles. The post also contrasts invoking an inline helper with rendering it as a component, explains why the latter can rebuild a React Native subtree on every render, and recommends defining components outside other components and using React.memo or callbacks judiciously.


### [10 Tips for Building Resilient Payment Systems](https://yomu.fyi/post/10-tips-for-building-resilient-payment-systems.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 28, 2022

The post distills lessons from five years working on Shopify’s payment infrastructure into guidance for building systems that tolerate failure and large-scale traffic. It frames the advice partly around onboarding developers who were new to payments or Shopify’s scale, and notes that load testing for BFCM 2021 began in July with globally distributed load generation. It recommends low timeouts across HTTP clients and data stores, circuit breakers such as Semian, and capacity reasoning with Little’s Law, rate limiting, and load shedding. Monitoring should cover latency, traffic, errors, and saturation, while structured, machine-readable logs make centralized records searchable; load tests use benchmark gateways that mimic production partner latency and capacity. For incidents, Shopify uses defined roles, Slack-based coordination, and retrospectives that turn incorrect assumptions into safeguards and training material.


### [Data-Centric Machine Learning: Building Shopify Inbox’s Message Classification Model](https://yomu.fyi/post/data-centric-machine-learning-building-shopify-inbox-s-message-classif.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 21, 2022

Shopify Inbox needed to classify millions of monthly customer messages so merchants could prioritize responses and guide product decisions. The team adopted a data-centric approach, improving the dataset rather than primarily changing model architectures. An initial prototype used Universal Sentence Encoder embeddings, UMAP and HDBScan clustering, semi-supervised labeling, and a neural classifier, but reached about 70% accuracy with 35% high-confidence coverage. For version 2.0, the team created a more explicit taxonomy, used human-labeled data and fine-tuned DistilBERT, while addressing privacy and class imbalance through data handling and targeted annotation. In production, version 2.0 achieved about 90% accuracy and 80% high-confidence coverage, although the taxonomy and training data require ongoing updates as conversation trends change.


### [5 Steps to Bounce Back from a Negative Performance Review](https://yomu.fyi/post/5-steps-to-bounce-back-from-a-negative-performance-review.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 20, 2022

An unfavorable performance review can feel like failing an exam, but it can also identify a clearer path to success when treated as feedback about role expectations rather than a judgment of personal worth. The five-step process is to avoid taking the review personally, adopt a growth mindset, clarify expectations with a lead, define measurable success, and establish a feedback loop. The author illustrates the approach with feedback about taking too long to ship code, which led to using smaller incremental improvements, and recommends tying goals to KPIs or other tangible metrics, supported by a lead or mentor. Regular check-ins, an up-to-date brag doc, and documented accomplishments can reduce surprises at the next review and help connect feedback to quarterly goals and observable progress.


### [Spin Infrastructure Adventures: Containers, Systemd, and CGroups](https://yomu.fyi/post/spin-infrastructure-adventures-containers-systemd-and-cgroups.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 15, 2022

Spin’s infrastructure team investigated instance instability after Kubernetes nodes experienced frequent failures, including roughly five nodes per day, and instances showed memory use that could exceed their assigned limits. Spin runs instances as Kubernetes pods, with systemd inside each container managing initialization and processes, and the team compared resource behavior across kubectl exec and Spin shell sessions. Stress tests showed that processes started through kubectl exec entered the kubepods cgroup hierarchy, while processes launched through Spin shell entered a hierarchy with an effectively unlimited memory limit, causing usage to appear on the node rather than the pod. Experiments comparing containerd, Docker, and Podman identified systemd cgroup delegation as the relevant difference: Podman isolated systemd and its child processes correctly, while the production setup used cgroupfs. The team identified switching COS to the systemd cgroup driver as the forthcoming fix, while noting that the bind-mounted cgroup filesystem enabled the escape.


### [Shopify’s Technical Interview Process: What to Expect and How to Prepare](https://yomu.fyi/post/shopify-s-technical-interview-process-what-to-expect-and-how-to-prepar.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 7, 2022

Shopify’s guide outlines the interview process for individual-contributor technical roles, while noting that stages can vary by role and team and that leadership hiring may add team-specific interviews. Candidates may have a one-hour recruiter “Life Story” conversation, a 40-minute CoderPad coding exercise, a 75–90-minute remote pair-programming session, and a 60-minute Technical Deep Dive focused on previous projects. The coding exercise assesses algorithmic thinking and problem solving, while pairing emphasizes communication, implementation, edge cases, scalability, limitations, and testability. The deep dive asks candidates to discuss impact, architecture, technical decisions, trade-offs, failures, successes, lessons learned, teamwork, and mentorship; the guide also recommends clarifying questions, running code early, using permitted references, and choosing projects they know well.


### [Shopify and Open Source: A Mutually Beneficial Relationship](https://yomu.fyi/post/shopify-and-open-source-a-mutually-beneficial-relationship.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 6, 2022

Shopify describes its relationship with Ruby, Rails, and the open-source community as mutually beneficial, linking the company’s success to its Rails foundation and its engineering culture to the Rails Doctrine. It frames a 100-year company ambition around making Ruby and Rails viable for large teams, mature codebases, millions of lines of code, and billions of web requests through production performance, architecture guidance, upgrades, tooling, and selective typing. To support that goal, Shopify contributes projects and initiatives spanning developer tooling, gradual typing, VS Code support, automated upgrades, YJIT, Ruby performance work, TruffleRuby collaboration, $500,000 in research funding, Bundler and RubyGems, and RubyGems.org security. The post argues that company participation improves engineering skills, application longevity, and influence over foundational software, while describing contributors who range from occasional participants to full-time maintainers.


### [The Story Behind Shopify’s Isospin Tooling](https://yomu.fyi/post/the-story-behind-shopify-s-isospin-tooling.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 5, 2022

Shopify’s Isospin is the systemd-based core of Spin, its in-house cloud development platform, designed to run multiple applications inside a single Linux VM. The earlier implementation relied on shell scripts, but growing application counts made it difficult to split applications into components, express dependencies, schedule jobs, and isolate processes. Isospin uses systemd unit graphs, targets, template units, and generators to create service configurations dynamically, including per-application copies of dependencies such as MySQL and Elasticsearch. Additional tooling assigns semi-stable ports by hashing service names and uses systemd readiness notifications, including a notify-port wrapper that checks HTTP availability; the resulting system reuses systemd’s dependency and health mechanisms, with more complex cross-application relationships under investigation.


### [How to Build Trust as a New Manager in a Fully Remote Team](https://yomu.fyi/post/how-to-build-trust-as-a-new-manager-in-a-fully-remote-team.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 30, 2022

The post explains why building trust as a new manager in a fully remote organization differs from joining a team with established relationships: passive cues and casual interactions are harder to observe, so remote work requires intentionality. The proposed 90-day plan focuses on the environment during the first 30 days, the team during the next 60, and the manager thereafter. Early actions include pairing sessions, one-on-ones, peer-group sessions, understanding the wider organization, setting up remote tools, and building cross-company relationships. Team leadership emphasizes spending time with members, using asynchronous communication for productivity and synchronous meetings for connection, and creating psychological safety through open communication and transparent discussion of failures. The final phase addresses FOMO, workday design, and experimentation through feedback and reflection.


### [Navigating Recurring Payments in India: A Backend Perspective](https://yomu.fyi/post/navigating-recurring-payments-in-india-a-backend-perspective.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 29, 2022

India’s October 2021 Reserve Bank of India (RBI) directive required recurring payments to use payer-authorized e-mandates, Additional Factor of Authentication (AFA), and pre-debit notifications at least 24 hours before charges. Shopify’s billing platform therefore had to model e-mandates, support recurring and one-time payments across cards and Unified Payments Interface (UPI), and integrate a local payment provider. The payment service reused its source object for the e-mandate token, recorded the temporary authorization as a charge for auditability, and refunded it asynchronously. To avoid two consecutive card authentication flows, the team used recurring-payment tokenization for both payment paths, accepting an atypical notification experience as a short-term trade-off; UPI required asynchronous webhook-driven handling and a hard mandate limit. After the beta launch, billing-payment success rates in India increased from pre-project levels, and the team said it would soon make UPI generally available to Indian merchants.


### [Perspectives on Onboarding: Joining Shopify as an Engineering Leader](https://yomu.fyi/post/perspectives-on-onboarding-joining-shopify-as-an-engineering-leader.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 27, 2022

Shopify’s onboarding program is presented as an alternative to the common first-day experience of receiving a laptop, documents, and a team without enough context. It gives new engineers, including engineering leaders, a structured period of roughly six weeks to learn the product, merchants, engineering practices, and company values, including by creating test shops and using the admin. Avanti Ketkar and Maria Robledo describe how this preparation helped them connect onboarding content to later work, ship a pull request after using a test shop, and build relationships and trust in a remote environment. Their accounts also cover the adjustment to learning before delivering impact, moving from a .NET background to Ruby and Rails, managing time zones, and keeping technical craft relevant while leading teams.


### [How We Built Hydrogen: A React Framework for Building Custom Storefronts](https://yomu.fyi/post/how-we-built-hydrogen-a-react-framework-for-building-custom-storefront.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 22, 2022

Hydrogen is a React framework for building custom Shopify storefronts, created to help merchants use the Storefront API without giving up capabilities associated with Liquid storefronts. Shopify built it around React Server Components and React 18’s streaming server-side rendering, using component-level data fetching, a preload cache to parallelize nested queries, and experimental loggers for query waterfalls and unused GraphQL properties. The framework evolved through more than 1,200 pull requests and 3,000 commits, with rigid components removed after feedback and nearly all exported GraphQL fragments eliminated to make queries more discoverable. The post reports that some demo store routes cut load time in half and that Hydrogen is used in production at Allbirds, Shopify Supply, Shopify Hardware, and Shopify, while future plans include a new router and incremental adoption from Liquid storefronts.


### [Introducing ShopifyQL: Our New Commerce Data Querying Language](https://yomu.fyi/post/introducing-shopifyql-our-new-commerce-data-querying-language.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 22, 2022

Shopify introduces ShopifyQL, a commerce-focused querying language intended to make data exploration accessible to Shopify Plus merchants without data science or coding backgrounds. It addresses the limits of dashboards and reports, which show what happened but may not explain why, and simplifies access to modeled commerce datasets that would otherwise require SQL and data-lifecycle knowledge. Its syntax uses clauses such as FROM, SHOW or VISUALIZE, BY, WHERE, SINCE, UNTIL, ORDER BY, COMPARE TO, and LIMIT, with direct charting, commerce-specific date ranges, and planned native period comparisons. ShopifyQL is available through the ShopifyQL Notebooks first-party app, while GraphQL APIs let partners submit queries and receive results from the underlying datasets. Shopify says it will use the language across Shopify Admin analytics and plans features including more visualizations, pivoting, and aggregate conditions.


### [Making Open Source Safer for Everyone with Shopify’s Bug Bounty Program](https://yomu.fyi/post/making-open-source-safer-for-everyone-with-shopify-s-bug-bounty-progra.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 15, 2022

Shopify describes how a bug bounty report led to application fixes and Rails contributions aimed at making open-source software safer. The 2021 Shopify Experiments report showed that a leaked development-environment secret could be used to generate trusted-looking data and reach remote code execution in a local development environment. The root cause was ActiveSupport’s MessageEncryptor using Ruby’s unsafe Marshal serializer by default in Rails versions up to 7.0.X, allowing untrusted data to trigger deserialization risks. Shopify first configured JSON in its application, then helped change the default serializers for MessageEncryptor and MessageVerifier to JSON in Rails 7.1.X, with an upgrade path for existing applications. It also developed a patch that monitors Marshal load and dump calls, raises on unexpected gem-originated calls, and runs in local development and continuous integration to prevent new usage.


### [How We Built Shopify Party](https://yomu.fyi/post/how-we-built-shopify-party.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 14, 2022

Shopify Party is a browser-based internal tool designed to make virtual hangouts more social and reduce video fatigue after Shopify moved to remote work. Its 3D spaces favor non-prescriptive play, letting participants explore and manipulate objects, join or leave at any point, and use a small control set rather than follow prescribed rules or win conditions. The initial version was built in three months with Unity 2020 and the Universal Render Pipeline, exported to WebGL, while Normcore synchronizes game state, provides VoIP and networked physics, and uses room time to keep autonomous objects aligned across clients. Performance work included third-party assets, GPU instancing for repeated models, simpler materials, and adjustable render resolution. The launch exceeded expectations, with hundreds of games played each week, and the tool is positioned as an option alongside video conferencing rather than a replacement.


### [8 Data Conferences Shopify Data Thinks You Should Attend](https://yomu.fyi/post/8-data-conferences-shopify-data-thinks-you-should-attend.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 10, 2022

Shopify’s data scientists and engineers curated eight upcoming data conferences for 2022, covering virtual, hybrid, and in-person formats. The selection supports learning and development by helping practitioners hear from peers about applications, techniques, use cases, and opportunities in the wider data community. Hybrid options include Data + AI Summit, Transform, RecSys, and ODSC West, with topics spanning analytics, machine learning, open source technologies, recommender systems, MLOps, natural language processing, and big data. In-person choices—PyData London, KDD, Re-Work Deep Learning Summit, and Crunch—feature tutorials, research, business applications, AI challenges, data-team practices, and machine learning at scale, with locations including London, Washington D.C., Toronto, and Budapest.


### [The Journey to Cloud Development: How Shopify Went All-in on Spin](https://yomu.fyi/post/the-journey-to-cloud-development-how-shopify-went-all-in-on-spin.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 9, 2022

Shopify’s development environment, the Ruby-based dev tool and xhyve-backed railgun VM, no longer handled the growing number of repositories, services, integrations, and resource demands around its monoliths. Developers needed more services, faced sluggish code-build-test loops, and encountered costly state changes when tophatting collaborators’ work. The Environments team concluded that development environments needed cloud-like elasticity, then tested an automatically configured local Kubernetes cluster and easy creation of Google Compute Engine VMs; the source also describes Isospin and Spin as the resulting direction. Local Kubernetes did not gain broad organic traction, while the current Isospin implementation is described as the team’s best iteration for developers working on majestic monoliths. The team plans to evolve it into an application-development library built on dev, add dependency inference, and address the tension between persistent environments and Kubernetes pod relocation.


### [Building a Form with Polaris](https://yomu.fyi/post/building-a-form-with-polaris.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 1, 2022

Shopify’s Polaris design system provides design and content guidelines and reusable React components for Shopify admin and third-party apps. The tutorial builds a basic product form with Title and Description fields, a Save button, and top navigation, while introducing React state, events, and handlers. It uses Form, FormLayout, TextField, Page, and Card, then wraps the application in the required AppProvider after MissingAppProviderError appears; AppProvider shares global settings, including translations, across child components. The form is configured as controlled, with separate useState values and onChange handlers for each field, an onSubmit path connected to the Page component’s onAction prop, and clearing logic after submission.


### [To Thread or Not to Thread: An In-Depth Look at Ruby’s Execution Models](https://yomu.fyi/post/to-thread-or-not-to-thread-an-in-depth-look-at-ruby-s-execution-models.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: May 31, 2022

Threaded servers such as Puma and thread-based Sidekiq are popular Ruby deployment choices because threads can increase throughput without a proportional increase in memory. The post compares process and thread models using a memory model that separates static application memory from per-request processing memory, then refines it with Copy on Write (CoW), where forked processes share pages until writes force copies. It explains why RSS can double-count shared pages, recommends PSS and Linux’s /proc/$PID/smaps\_rollup for more meaningful measurements, and gives a production example in which about two-thirds of static memory is shared. The conclusion is metric-dependent: preload applications to improve CoW, prefer fewer larger containers when appropriate, consider Unicorn for reliable request timeouts, and start web workloads at two threads unless substantial I/O wait justifies more; job processors may benefit from higher counts.


[Newer posts](https://yomu.fyi/company/shopify/page/6.md) · [Older posts](https://yomu.fyi/company/shopify/page/8.md)
