![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_216ppi_06_CachingWithoutMarshal.jpg?v=1707155015&width=600)
Development
Software development requires a system of values, principles and practices, optimal tools, and feedback loops to ensure the right decisions are being made.
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_216ppi_06_CachingWithoutMarshal.jpg?v=1707155015&width=600)
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/server-wires.jpg?v=1704987717&width=600)
Horizontally scaling the Rails backend of Shop app with Vitess
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220111_216ppi_01_HydrogenAndTailwind-ThePerfectMatchForBuildingBeautifulStorefronts.jpg?v=1701355002&width=600)
Getting Started with React Native Skia
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_01_YJIT-BuildingaNewJITCompilerforCRuby_0a00a8cf-3951-4556-9b2c-3f88e9de76ff.jpg?v=1697134143&width=600)
Introducing Ruvy
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/Banner.png?format=jpg&quality=90&v=1690304595&width=600)
Sidekick’s Improved Streaming Experience
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/V3.3.png?format=jpg&quality=90&v=1681137837&width=600)
Creating a Flexible Order Routing System with Shopify Functions
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/GCfixed.png?format=jpg&quality=90&v=1681399892&width=600)
Adventures in Garbage Collection: Improving GC Performance in our Massive Monolith
![A graphic with the words Engineering Leadership: Staff Developer and an illustration of four people on a team about to shake hands](https://cdn.shopify.com/s/files/1/0779/4361/articles/What_Being_a_Staff_Developer_Means_at_Shopify_39193fc4-d025-4ddf-a2a8-d9caf858fe49.jpg?v=1680013556&width=600)
What Being a Staff Developer Means at Shopify
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_i18n_internationalization_best_practices.jpg?v=1678914501&width=600)
Lessons From Linguistics: i18n Best Practices for Front-End Developers
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_216ppi_02_RubyExecutionModels_1.jpg?v=1677186891&width=600)
Improving the Developer Experience with the Ruby LSP
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_216ppi_05_CodeRanges-ADeeperLookAtRubyStrings.jpg?v=1676658509&width=600)
The Case Against Monkey Patching, From a Rails Core Team Member
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_72ppi_01_ShopifyMadePatternsInOurRailsApps_384c848b-4fcd-4363-a8e4-5f84d5f05999.jpg?v=1676501389&width=600)
The 25 Percent Rule for Tackling Technical Debt
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220111_216ppi_01_AllanLeinwand2022BlogPost-Header.jpg?v=1675267141&width=600)
Bringing Javascript to WebAssembly for Shopify Functions
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220111_72ppi_04A_HowToGetAnEngineeringInternshipAtShopify-Header_fd495599-7dd0-4edc-8fed-c36ec4ea1a08.jpg?v=1675270849&width=600)
The Hardest Part of Writing Tests is Getting Started
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_06_BuildinganAppClipwithReactNative_e8df8a83-482c-4e0d-a2a0-660737ababcb.jpg?v=1674227288&width=600)
Making Your React Native Gestures Feel Natural
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_216ppi_02_TryOutYJITforFasterRubying.jpg?v=1673882706&width=600)
Ruby 3.2’s YJIT is Production-Ready
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_216ppi_02_RubyExecutionModels_8c134200-ca87-4174-8f8d-0976492f1a3d.jpg?v=1671729711&width=600)
Reliving Your Happiest HTTP Interactions with Ruby’s VCR Gem
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210525_72ppi_03_HowtoBuildaWebAppwithandwithoutRailsLibraries_efa4ec9f-e707-4ba1-94e8-402e5c4f9abb.jpg?v=1671558078&width=600)
Optimizing Ruby’s Memory Layout: Variable Width Allocation
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_216ppi_01_YJIT-BuildingaNewJITCompilerforCRuby_2.jpg?v=1671484892&width=600)
Year in Review 2022: Tenderlove's Ruby and Rails Reflections and Predictions
![An illustration of an engine with lines of code on it. On either side, two hands holding wrenches on either side turn nuts an bolts.](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_shopify_embraces_rust_systems-programming.jpg?v=1670972465&width=600)
Shopify Embraces Rust for Systems Programming
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_Blog_ReactNativePerformanceAtShopify.jpg?v=1669227683&width=600)
Our Solution for Measuring React Native Rendering Times
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_221107_216ppi_03_DevDegreeServer-DrivenUiArchitectureOnTheShopApp_48f16580-d577-4702-820d-43bc5b69834f.jpg?v=1669143248&width=600)
Implementing Server-Driven UI Architecture on the Shop App
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_221018_216ppi_02_WhatOpenSourcingFlashlistTaughtUs.jpg?v=1668449760&width=600)
What We Learned from Open-Sourcing FlashList
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_72ppi_06_CachingWithoutMarshal-ALT.jpg?v=1668465298&width=600)
Caching Without Marshal Part 2: The Path to MessagePack
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_72ppi_06_CachingWithoutMarshal.jpg?v=1668048444&width=600)
Caching Without Marshal Part 1: Marshal from the Inside Out
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220901_72ppi_05_TheApolloCacheisYourFriendIfYouGetToKnowIt.jpg?v=1667965966&width=600)
Apollo Cache is Your Friend, If You Get To Know It
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_221107_216ppi_01_MixingItUpRemixJoinsShopifyToPushTheWebForward.jpg?v=1669215623&width=600)
Mixing It Up: Remix Joins Shopify to Push the Web Forward
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_221018_72ppi_06_DoBigRubyGemsDependOnSmallRubyGems.jpg?v=1667611985&width=600)
Finding Relationships Between Ruby’s Top 100 Packages and Their Dependencies
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_72ppi_01_OnTheImportanceOfPullRequestDiscipline.jpg?v=1666044169&width=600)
On the Importance of Pull Request Discipline
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220901_72ppi_06_HowToWriteCodeWithoutHavingToReadIt.jpg?v=1665501356&width=600)
How to Write Code Without Having to Read It
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220927_72ppi_03_BuildingShopifysNewFlexCompSystem.jpg?v=1666044315&width=600)
The Engineering Story Behind Flex Comp
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_72ppi_06_GenericShopifyEngineeringHeaderA_1_c949d1fb-3f73-42b3-a005-f67914c8ac8e.jpg?v=1663087500&width=600)
Managing React Form State Using the React-Form Library
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220901_72ppi_04_DebuggingServerSideWebAssembly.jpg?v=1666185505&width=600)
Four Approaches to Debugging Server-side WebAssembly
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210913_216ppi_06_TeamShopifyAndFriendsWinsInternationalAICompetition.jpg?v=1661881524&width=600)
Focus On Behavior, Not State, for a More Maintainable Codebase
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_RailsConf2022.jpg?v=1660326801&width=600)
RailsConf 2022: 10 Shopify Tech Talks You Might Have Missed
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220216_72ppi_04_BestInClassDXWithViteAndHydrogen_ff72fcea-992e-4268-be2c-2f5fe8688349.jpg?v=1661266465&width=600)
How We Built Oxygen: Hydrogen’s Counterpart for Hosting Custom Storefronts
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_72ppi_06_GenericShopifyEngineeringHeaderA_1.jpg?v=1660846436&width=600)
How We Enable Two-Day Delivery in the Shopify Fulfillment Network
![When is JIT Faster Than A Compiler?](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_03_GitHubDoesMyOperationsHomeworkA-RubySpeedStory_c1ed4a99-a1a5-4545-9ea1-904b4aa92c77.jpg?v=1660224761&width=600)
When is JIT Faster Than A Compiler?
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_216ppi_01_ShopifyMadePatternsInOurRailsApps.jpg?v=1658511846&width=600)
Mastering React’s Stable Values
![10 Tips for Building Resilient Payment Systems](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210719_72ppi_06_HowWeRestartThousandsOfProxySQLs.jpg?v=1659022840&width=600)
10 Tips for Building Resilient Payment Systems
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_211008_72ppi_01_YJIT-BuildingaNewJITCompilerforCRuby_3cd7d064-62e2-4bf9-aaf3-7afb8ce1d979.jpg?v=1657047356&width=600)
Shopify and Open Source: A Mutually Beneficial Relationship
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220216_72ppi_06_ADataScientistsGuideToMeasuringProductSuccess.webp?v=1655854166&width=600)
Navigating Recurring Payments in India: A Backend Perspective
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220216_216ppi_04_BestInClassDXWithViteAndHydrogen.jpg?v=1655821988&width=600)
How We Built Hydrogen: A React Framework for Building Custom Storefronts
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220428_72ppi_02_HowWeBuiltShopifyParty.jpg?v=1654867564&width=600)
How We Built Shopify Party
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_72ppi_06_GenericShopifyEngineeringHeaderA_c0cc3211-1cab-4ebf-89fb-93f53f2f26df.jpg?v=1653989685&width=600)
Building a Form with Polaris
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_216ppi_02_RubyExecutionModels.jpg?v=1653485716&width=600)
To Thread or Not to Thread: An In-Depth Look at Ruby’s Execution Models
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220411_72ppi_01_ImplementingEqualityInRuby.jpg?v=1653388463&width=600)
Implementing Equality in Ruby
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_210525_72ppi_03_HowtoBuildaWebAppwithandwithoutRailsLibraries_c22aca28-a94f-4f55-b069-5dc806a498ac.webp?v=1652466543&width=600)
Shopify Invests in Research for Ruby at Scale
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220216_72ppi_02_Maestro-TheOrchestrationLanguagePoweringShopifyFlow.jpg?v=1652462227&width=600)
Maestro: The Orchestration Language Powering Shopify Flow
![](https://cdn.shopify.com/s/files/1/0779/4361/articles/ShopifyEng_BlogIllustrations_220428_72ppi_05_TheNextGenerationOfYJIT-PortingYJITToRust.jpg?v=1653421689&width=600)