---
title: "Architecture"
description: "834 posts about Architecture, summarised, each linking to the original."
---

# Architecture
> 834 posts about Architecture, summarised, each linking to the original.

## Articles

### [FlashList v2: A ground-up rewrite for React Native's New Architecture](https://yomu.fyi/post/flashlist-v2-a-ground-up-rewrite-for-react-native-s-new-architecture.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jul 31, 2025
- Type: Announcement

FlashList v2 is a ground-up rewrite of the React Native list component, aimed at removing v1’s dependence on item-size estimates, native layout corrections, and imprecise scrolling. Built for React Native’s New Architecture, it uses synchronous layout measurements to correct positions before paint and eliminates the need for native code. Its algorithm combines progressive rendering, predictions updated by item type, and rapid corrections, while adaptive rendering responds to scroll velocity, direction, and device performance. The new scrolling system progressively refines target positions for precise scrollToIndex operations, and horizontal lists can contain resizable items and coordinate with parent lists. The release also adds scroll-position maintenance, improved masonry support, recycle-pool controls, helper hooks, and better web support; benchmarks report up to 50% less blank area while scrolling than v1 on the new architecture.


### [Workflows: Automatically customize an object with metadata](https://yomu.fyi/post/workflows-automatically-customize-an-object-with-metadata.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Ashley Ansari
- Published: Jul 22, 2025
- Type: Tutorial

Stripe Workflows can customize Stripe objects with metadata, adding contextual key-value information without changing the core data model or storing it separately. The example targets customers associated with successful Payment Intents that include a tip, so a customer can be labeled for business use, such as reconciliation, reporting, or internal integrations. To build it, the workflow retrieves the customer from the Payment Intent, emails a team member, checks whether the successful Payment Intent contains a non-empty tip amount, and updates that customer with the metadata key Tier and value VIP. Workflows runs a trigger and sequential actions or conditions in a visual Stripe Dashboard builder, while metadata can carry information to later workflow steps and support automation, analytics, and debugging.


### [How we built it: Jurisdiction resolution for Stripe Tax](https://yomu.fyi/post/how-we-built-it-jurisdiction-resolution-for-stripe-tax.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Erich Rentz
- Published: Jul 10, 2025
- Type: Explainer

Stripe Tax’s jurisdiction resolution system (JRS) determines which US taxing jurisdictions apply to a transaction, a difficult task because more than 16,000 combinations of rates and rules depend on intricate, changing boundaries. Its offline geographic information system cleans and standardizes boundary data, overlays states, counties, cities, and districts, and generates time-aware Stripe places of taxation (SPOTs), while the online system matches an address to the relevant SPOT. To reduce point-in-polygon latency, JRS indexes nested bounding boxes in a balanced R-tree rebuilt with the Sort-Tile-Recursive algorithm, narrowing candidates before applying the final polygon calculation; disjoint SPOTs are split and smaller boxes prioritized. Most states achieve address matching in a few milliseconds, with 95th-percentile latency below 10 milliseconds except South Carolina, while historical SPOT data creates an ongoing memory challenge.


### [Stay within limits: API rate-limit-friendly pattern for Stripe webhooks](https://yomu.fyi/post/stay-within-limits-api-rate-limit-friendly-pattern-for-stripe-webhooks.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Phil Leggetter
- Published: Jul 3, 2025
- Type: Tutorial

Stripe webhook handlers that treat events as signals and fetch the latest resource can preserve correctness when payloads are stale, partial, duplicated, or out of order, but bursts of events can drive excessive API traffic. The post describes Stripe’s general limit as 100 read requests per second and notes that exceeding it produces 429 responses. Its solution places Hookdeck Event Gateway between Stripe and the application: Hookdeck authenticates and queues incoming webhooks, throttles delivery, and lets the handler retrieve the current Stripe resource at a controlled pace. The Express.js flow verifies the Hookdeck signature, checks the event and resource ID, fetches the invoice with the Stripe SDK, and supports queue monitoring, alerts, and retries for backpressure.


### [Stripe for marketplaces: Mapping commercial relationships in code](https://yomu.fyi/post/stripe-for-marketplaces-mapping-commercial-relationships-in-code.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Ana Andres
- Published: Jul 3, 2025
- Type: Tutorial

The post presents a guide to mapping marketplace relationships among buyers, sellers, and the platform in Stripe Connect, focusing on payment processing, seller onboarding, payouts, fees, refunds, and disputes. It uses Greens & Dairy Mart, a fictitious farm marketplace, to show how an unlicensed marketplace can manage payments with Stripe while meeting applicable regulatory requirements. Using the Account API, connected accounts, controller settings, KYC links, capabilities, Payment Intents, transfers, and webhooks, the implementation encodes responsibilities and money movements. Greens & Dairy Mart charges customers after farmers confirm dispatch, pays farmers after delivery confirmation, and retains 15% of the final price. The guide also shows refund and transfer reversal flows, including recovering disputed amounts from a seller’s balance, and concludes that Connect APIs can automate complex marketplace contracts and financial interactions.


### [Remixing Shopify's Admin: How We Made It 30% Faster and AI-Ready](https://yomu.fyi/post/remixing-shopify-s-admin-how-we-made-it-30-faster-and-ai-ready.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 30, 2025
- Type: Problem & solution

Shopify rebuilt its Admin architecture to address inconsistent loading, duplicate requests, and fragmented route knowledge across a TypeScript codebase serving 67 million daily page views. With 101 teams contributing about 350 pull requests daily and the codebase containing 3,184,248 lines of TypeScript, the work adopted Remix with Vite and SPA mode. Typed route manifests, globbed by Vite, now define metadata and a single source of truth for 1,017 routes, while Remix loaders start data fetching before large component bundles finish loading. Idle-time prefetching warms the Apollo cache, and persistent IndexDB storage helps frequently visited pages load between sessions. The changes delivered a 30% improvement in perceived load times, standardized transitions, and created an architecture in which Remix actions and zod schemas let Sidekick discover forms, validate inputs, and submit tasks without loading unnecessary JavaScript.


### [Implementing scalable metered billing with Stripe: How Edgee handles billions of events](https://yomu.fyi/post/implementing-scalable-metered-billing-with-stripe-how-edgee-handles-bi.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Alex Casalboni
- Published: Jun 24, 2025
- Type: Problem & solution

Edgee needed usage-based billing for a business combining flat-rate subscriptions with charges for proxy requests and delivered data events, while processing billions of monthly requests across more than 100 edge locations. Its architecture captures web data at the edge through a proxy and records raw metering data centrally in Google BigQuery. To control several terabytes of data, Edgee aggregates usage by tenant and sends hourly Stripe meter events through AWS Lambda, with graduated pricing and idempotency handled by Stripe. A Go configuration defines meters, prices, flat-rate plans, and pricing tiers, while retry logic and idempotent updates support resilience during disruptions. The resulting billing system remains stateless and low-latency while providing accurate monthly invoicing and a simple hosted customer interface.


### [The Future of React Native Graphics: WebGPU, Skia, and Beyond](https://yomu.fyi/post/the-future-of-react-native-graphics-webgpu-skia-and-beyond.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 20, 2025
- Type: Announcement

React Native WebGPU and React Native Skia are presented as a graphics stack for advanced 2D, 3D, and general-purpose GPU workloads in native applications. The work uses Skia Graphite with Dawn, Google’s open-source WebGPU implementation, to replace separate OpenGL and Metal backend implementations with a unified architecture, while enabling Three.js, React Three Fiber, TensorFlow.js, and compute shaders. Three.js Shading Language lets the same shaders target WebGPU and WebGL, and Shopify’s Black Friday globe prototypes run natively with identical results to the web version. Architectural changes in React Native Skia moved from a mutable SkiaDOM to an immutable fabric reconciler, producing reported animation gains of up to 50% on iOS and nearly 200% on Android, plus 98% of reported Android crashes fixed. Graphite remains experimental, but adds dedicated-thread canvases and bidirectional 2D/3D composition, while Skia also supports macOS, tvOS, and headless Node.js rendering.


### [Introducing the commerce payments protocol](https://yomu.fyi/post/introducing-the-commerce-payments-protocol.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Jun 12, 2025
- Type: Announcement

Coinbase and Shopify are launching the Commerce Payments Protocol to support real-world commerce onchain, where direct token transfers do not handle checkout, settlement, fulfillment, cancellations, and refunds. The protocol uses an escrow smart contract to authorize payments by moving funds from the payer into escrow, then capture funds for the receiver later or in multiple partial increments. An operator role submits transactions for the parties, while payer-signed payment details constrain fields such as the receiver, token, maximum amount, and expiries. The protocol is available on Base and powers Shopify’s new USDC payment method, which is rolling out to millions of Shopify Payments stores; its six core operations include authorize, charge, void, reclaim, and refund, with the source also describing capture.


### [Stop juggling multiple POS devices with Stripe Terminal](https://yomu.fyi/post/stop-juggling-multiple-pos-devices-with-stripe-terminal.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Andrew Robinson
- Published: Jun 12, 2025
- Type: Tutorial

Traditional point-of-sale workflows often collect signatures, contact details, receipt preferences, and other customer information through separate devices, verbal input, or manual entry, creating errors, delays, and clutter. Stripe Terminal’s on-screen input collection lets businesses request this data on a compatible reader, supporting selection, signature, email, phone, text, and numeric fields before or after payment. Developers configure forms with the Stripe API or Terminal SDKs, can sequence multiple inputs and attach metadata, and receive responses through terminal.reader.action\_succeeded webhooks; signature files are returned by file ID and need to be downloaded within 24 hours. The rental-car example uses selection and email forms for reservation lookup, followed by an on-reader agreement signature, replacing a separate signature pad and manual transcription while giving the POS more accurate data for receipts, lookups, and loyalty interactions.


### [Extending Docusign with Stripe to automate complex billing workflows](https://yomu.fyi/post/extending-docusign-with-stripe-to-automate-complex-billing-workflows.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Paige Rossi
- Published: Jun 2, 2025
- Type: Tutorial

Docusign’s Stripe extension app addresses agreement workflows that continue beyond eSignature, where customer and billing data previously required manual transfer or complex integrations between platforms. The post shows how to install the app, start from the “Send new customer data to Stripe for invoicing” Maestro workflow template, and map web-form data to Stripe Customer, Invoice, InvoiceItem, and Email Invoice steps. It also explains how developers can switch the workflow to an API trigger, retrieve trigger requirements, and launch an instance with two authenticated API calls: one GET and one POST. The resulting flow collects customer information, creates a Stripe customer and draft invoice, adds an invoice item, and sends the invoice, while the returned instance URL can be opened or embedded for participants.


### [How We Decomposed Tinder’s Monolith](https://yomu.fyi/post/how-we-decomposed-tinder-s-monolith.md)
- Company: [Tinder](https://yomu.fyi/company/tinder.md)
- Author: Tinder
- Published: May 23, 2025
- Type: Problem & solution

Tinder faced significant agility and build performance challenges caused by an iOS codebase monolith containing over 1,000 files and 150,000 lines of code. Manual extraction efforts risked creating massive, unmanageable pull requests that would require constant rebasing against the main branch. To systematically decompose the target into Swift sub-modules, the team mapped declarations and references via the Swift compiler into a directed graph. They iteratively extracted leaf nodes with an in-degree of zero across sequential phases and automated common code adjustments, including module dependencies, imports, access control levels, and dependency injection. The automated decomposition completed in under six months with zero P0 incidents, reducing monolith build times by 78% and disallowing future additions to the monolith target.


### [How to easily charge customers across accounts in an organization](https://yomu.fyi/post/how-to-easily-charge-customers-across-accounts-in-an-organization.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Daniel Wood
- Published: May 7, 2025
- Type: Tutorial

Stripe’s Organizations customer and payment method sharing addresses the difficulty of giving customers a unified checkout when a business uses separate accounts for business lines or countries. After access is enabled, all new and existing customers and their saved card payment methods can be shared between selected accounts, using the same IDs, so a saved card can be charged in another account without recollection. Only selected customer fields—such as name, email, phone, tax IDs, and preferred locales—are shared; metadata, shipping, and other fields remain account-specific, while non-card payment methods cannot be charged cross-account. The guide demonstrates testing in an organization sandbox, creating Checkout Sessions with the shared customer ID, viewing organization-wide transactions, and using a single organization webhook; sharing is in preview and requires customer consent.


### [Introducing the SOP-driven LLM agent frameworks](https://yomu.fyi/post/introducing-the-sop-driven-llm-agent-frameworks.md)
- Company: [Grab](https://yomu.fyi/company/grab.md)
- Author: Fujiao Liu
- Published: Apr 25, 2025
- Type: Announcement

Grab introduces an LLM agent framework that uses Standard Operating Procedures (SOPs) to guide enterprise automation and improve consistency in complex processes. It represents SOPs as trees of action and decision nodes, while a planner uses Depth-First Search, prompt generation, and backtracking to direct an LLM-powered worker agent; context compression and limited APIs are used to address hallucination and efficiency concerns. An SOP editor, plugins for APIs, Python, and SQL, workflows, a GRAG pipeline, playground, multilingual user agent, and state stack extend the framework’s capabilities. Reported evaluations include over 99.8% accuracy, an Account Takeover Investigations bot automating 87% of cases and reducing investigation time from 23 minutes to three, and fraud investigations cutting AHT by 45% and saving over 300 man-hours monthly.


### [Mobile Bridge: Making WebViews Feel Native](https://yomu.fyi/post/mobile-bridge-making-webviews-feel-native.md)
- Company: [Shopify](https://yomu.fyi/company/shopify.md)
- Author: 2023-10-18
- Published: Apr 25, 2025
- Type: Problem & solution

Shopify’s mobile app has about 600 screens, but building every non-critical screen natively or in React Native was costly and slowed development, while conventional WebViews felt slow, disconnected, and out of place. Mobile Bridge addresses this hybrid-app problem with native iOS and Android modules that preload, authenticate, cache, and reuse WebViews, reducing P75 load time from 6 seconds to 1.4 seconds, including network latency and rendering. Built on @remote-ui/rpc, the framework uses JavaScript, CSS, Polaris overrides, title and action APIs, TransportableView, snapshots, and native modal transitions to preserve state and align web screens with native navigation and appearance. WebViews can also invoke native features such as date pickers, barcode scanning, and Add to Wallet; Shopify says the standalone library is being adopted across other products while critical features remain native or React Native.


### [Because nobody likes being charged twice](https://yomu.fyi/post/because-nobody-likes-being-charged-twice.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Ben Smith
- Published: Apr 10, 2025
- Type: Problem & solution

Payment workflows can produce duplicate charges when a customer retries after a connection drop while the backend is still retrying the original request. The post frames network timeouts, crashes, database locks, downstream errors, and user interruptions as normal distributed-systems failures that can leave payment state uncertain. It recommends generating a unique idempotency key for one specific action, sending it with the Stripe request, and reusing it on every retry; Stripe recognizes the key for 24 hours and returns the original response. It also recommends placing payment jobs in a queue such as Amazon SQS, where workers retry failures and route repeatedly failing messages to a dead-letter queue. Together, queues preserve work during temporary outages and idempotency makes retries safe, while careful key scope and timing avoid stale or cross-operation behavior.


### [Using an AWS microservice architecture for subscription management](https://yomu.fyi/post/using-an-aws-microservice-architecture-for-subscription-management.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: James Beswick
- Published: Apr 8, 2025
- Type: Explainer

Enterprise subscription management must handle mid-cycle plan changes, usage-based billing adjustments, synchronized service updates, atomicity, failed operations, data consistency, and auditability beyond basic recurring billing. This sample architecture uses an event-driven AWS design in which subscription changes are published to EventBridge and routed to Step Functions workflows. EventBridge provides at-least-once delivery, content-based filtering, dead-letter queue support, and integration with Step Functions, while Lambda functions validate changes, calculate Stripe proration, update external subscriptions, and trigger service-specific actions. Step Functions supplies retries with exponential backoff for StripeTemporaryError, DynamoDB stores current and historical subscription data using transactional updates, and Stripe calls use an event identifier as an idempotency key. The pattern is presented as a flexible foundation for reliability, maintainability, compensation for partial changes, and auditability in systems handling financial transactions and service provisioning.


### [Scaling Nextdoor’s Datastores: Part 3](https://yomu.fyi/post/scaling-nextdoor-s-datastores-part-3.md)
- Company: [Nextdoor](https://yomu.fyi/company/nextdoor.md)
- Author: Ronak Shah
- Published: Mar 19, 2025
- Type: Problem & solution

Look-aside caching with object byte serialization can cause critical compatibility failures when application versions, dependencies, or database schemas change. Serialized cache entries bound to specific runtimes risk deserialization errors during deployments, triggering thundering herd queries against the underlying datastore. To resolve this, Nextdoor replaced runtime-bound serialization like Python pickle with MessagePack to serialize Django model objects. The team achieved forward compatibility by letting MessagePack ignore unrecognized new fields in older application code, while backward compatibility relies on mandatory default values for newly added model attributes. Nextdoor prepends a ten-byte header containing format metadata and version information before writing the serialized payload to cache stores.


### [Scaling Nextdoor’s Datastores: Part 2](https://yomu.fyi/post/scaling-nextdoor-s-datastores-part-2.md)
- Company: [Nextdoor](https://yomu.fyi/company/nextdoor.md)
- Author: Tushar Singla
- Published: Mar 19, 2025
- Type: Problem & solution

Nextdoor encountered scaling issues after adding read replicas when product engineers were initially tasked with deciding whether to route queries to the primary or replica databases. As business logic grew and gained abstraction layers, engineers struggled to track read-after-write consistency constraints across the call stack. To avoid replication lag race conditions, engineers routinely wrapped logic in database transactions, unintentionally directing all queries to the primary node and eroding read replica benefits over several years. The Core-Services team resolved this by injecting custom tracking logic into their Django ORM layer to monitor table writes during web requests and automate routing. They further optimized the system using a timing-based approach that restored replica read eligibility after the p99.9 replication lag elapsed.


### [Tracking customer spend in an omnichannel or multiprocessor environment](https://yomu.fyi/post/tracking-customer-spend-in-an-omnichannel-or-multiprocessor-environmen.md)
- Company: [Stripe](https://yomu.fyi/company/stripe.md)
- Author: Andrew Robinson
- Published: Feb 19, 2025
- Type: Explainer

Merchants operating across websites, mobile apps, physical stores, and multiple payment processors struggle to connect spending because customers use physical cards, digital wallets, and tokenized methods. Payment Account Reference (PAR), a 29-character alphanumeric identifier introduced by EMVCo, provides a non-financial, non-reversible reference that maps one PAN to multiple tokens without exposing sensitive payment data. Because the PAR is independent of payment method and processor, merchants can link transactions across channels and preserve continuity when a card is replaced with a new PAN. The post presents an omnichannel retail example and describes potential benefits including unified customer profiles, personalization, cross-channel reconciliation, reduced PAN-related PCI burden, and processor flexibility.


[Newer posts](https://yomu.fyi/topic/architecture/page/27.md) · [Older posts](https://yomu.fyi/topic/architecture/page/29.md)
