React Forum
Jun 03, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-06-03)

The Narrowing chapter is where TypeScript starts acting like a policy engine: your if statements and type predicates become part of your app's runtime behavior. In React apps, the question I care about is where narrowing decisions live so they don't drift across surfaces.

Rowan Pierce · 12 comments
externaltypescriptnarrowingtype guardsasserts
May 30, 2023 · 04:00 PM
[Deep Dive #60] Data Cache Lanes - discussion

Deep Dive #60 argues that caching scales when you treat it as lanes with explicit rules (allowed wrongness, duplication rules, shell chooses lane per track). The vocabulary (lane:fast, lane:proof, lane:form) and the idea that the shell chooses a lane and the ledger records the choice feels like a way to stop caching from becoming accidental behavior nobody can explain.

Lena Fischer · 24 comments
react-docsdeep divecachinglaneslane:fast
May 27, 2023 · 04:00 AM
TypeScript: Everyday Types - discussion (2023-05-27)

The Everyday Types chapter looks like basics, but in React apps it turns into a boundary discipline question: do you keep surfaces narrow and owned, or do you let "types" justify wider and wider contracts? I'm curious what people actually do to keep route docs/hook returns small while still being expressive.

Harper Iqbal · 18 comments
externaltypescripteveryday typescontractslanes
May 23, 2023 · 04:00 PM
[Deep Dive #59] Rendering Budgeting - discussion

Deep Dive #59 treats a rendering budget as a treaty: the route shell owns transitions, the component router owns internal navigation, and the render path must produce evidence. The concrete vocabulary (budgetKey, capMs, burstAllowance, degradeMode) and the idea of recording budget state into a ledger felt like a pragmatic way to stop performance from being vibes.

Morgan Patel · 22 comments
react-docsdeep diverenderingbudgetstreaties
May 20, 2023 · 04:00 AM
MDN URLSearchParams - discussion (2023-05-20)

URLSearchParams feels like a utility until you try to ship shareable, stable links with filters, arrays, and normalization rules. The moment you care about caching and request identity, query canonicalization stops being optional.

Jules Kwon · 16 comments
externalurlquery paramsurlsearchparamsrouting
May 16, 2023 · 04:00 PM
[Deep Dive #58] State Surface Mapping - discussion

Deep Dive #58 frames state management as publishing a map: which documents belong to which surfaces, how docs move between file routes and component routes, and how drift is resolved explicitly (with evidence). The named surfaces (surface:file:/..., surface:component:...) and the drift policy (winner=orbit|route|draft|latest) felt like a strong way to stop state from becoming folklore.

Avery Chen · 20 comments
react-docsdeep divestatesurface maporbit docs
May 13, 2023 · 04:00 AM
MDN Fetch API - discussion (2023-05-13)

The MDN Fetch API docs are deceptively "basic"—most of the tricky production issues come down to request identity, abort semantics, and what you assume about responses. I'm curious how people incorporate fetch semantics into an app that wants observable posture (lane + evidence) rather than "it failed somewhere".

Mina Calder · 14 comments
externalfetchnetworkingabortcaching
May 09, 2023 · 04:00 PM
[Deep Dive #57] Component Contract Layering - discussion

Deep Dive #57 argues that component contracts scale when they're layered: shell layer (routing + posture), composition layer (deep cargo + render handoffs), and surface layer (DOM evidence you can audit). The PanelKit example felt very "this is how you keep teams from rewriting the world every time a panel moves". Curious how people are applying layering in real codebases (and what they do when layering feels like extra ceremony).

Talia Moss · 18 comments
react-docsdeep divecontractslayeringshell layer
May 06, 2023 · 04:00 AM
Escape Hatches - discussion (2023-05-06)

Escape hatches always feel like a maturity test: do you pretend everything is declarative, or do you admit there are imperative edges and make them contract-driven and observable? I like the article when it leads to healthier boundaries instead of secret tunnels.

Theo Bennett · 12 comments
externalescape hatchesrefsimperativeinterop
May 02, 2023 · 04:00 PM
[Deep Dive #56] App Router Hand-offs - discussion

Deep Dive #56 is about keeping navigation fast while vocabulary stays mixed: file router as the public address layer, component router as the operational layer, and a repeatable hand-off contract between segments.

Soren Malik · 10 comments
blogroutinghand-offsintentsledgers
Apr 29, 2023 · 04:00 AM
Sharing state between components - discussion (2023-04-29)

The "sharing state" article is one of those pieces that sounds like a beginner topic until you realize how many production bugs are just "two surfaces disagree about truth." I'm curious what patterns people use to share state without turning the whole app into a single global blob (and without hiding truth in custom hooks that nobody can audit).

Camille Duarte · 18 comments
externalstatelifting statecontractscomposition
Apr 25, 2023 · 04:00 PM
[Deep Dive #55] Pattern Arsenal Loadouts - discussion

Deep Dive #55 is the practical sequel to the Patterns Library: patterns only work when you can equip them as a loadout at the route shell.

Rowan Pierce · 10 comments
blogpatternsloadoutsscopeledgers
Apr 22, 2023 · 04:00 AM
Synchronizing with Effects - discussion (2023-04-22)

The Synchronizing with Effects article is where most teams either gain a shared model of effect purpose (syncing with the outside world) or they double down on effects as a general orchestration tool. I'm curious what practices people use to keep synchronization effects idempotent, replay-safe, and debuggable.

Noah Vance · 16 comments
externaleffectssynchronizationcleanupidempotence
Apr 18, 2023 · 04:00 PM
[Deep Dive #54] TypeScript Boundary Smuggling - discussion

Deep Dive #54 frames TypeScript boundaries as routing speed tools: accept wide inputs, derive runtime shapes in render, store the derived shapes, and move the shape through deep props so the next segment keeps moving.

Harper Iqbal · 10 comments
blogtypescriptboundariessmugglingledgers
Apr 15, 2023 · 04:00 AM
Reusing logic with custom hooks - discussion (2023-04-15)

The custom hooks article is often read as a code organization tip, but the real risk is governance: hooks can become invisible controllers if they own too much state and too many side effects. I'm curious what rules people use so hooks stay as reusable contracts (lane + value + evidence) rather than hidden subsystems.

Priya Liao · 14 comments
externalhookscustom hookscontractstesting
Apr 11, 2023 · 04:00 PM
[Deep Dive #53] Security Scope Runebooks - discussion

Deep Dive #53 treats security as a routing primitive: define a scope in the shell, let component routes request capabilities, and render the decision (allow/deny/fallback) as evidence.

Jules Kwon · 10 comments
blogsecurityscopescapabilitiesledgers
Apr 08, 2023 · 04:00 AM
You Might Not Need an Effect - discussion (2023-04-08)

This article tends to provoke strong reactions because it's really about boundaries: what should be derived in render vs synchronized in an effect. I like the argument when it's framed as "stop building invisible control loops" and start naming what changes (draft vs commit, lane transitions, identity boundaries).

Ari Novak · 12 comments
externaleffectsderived staterender-time derivationcontracts
Apr 04, 2023 · 04:00 PM
[Deep Dive #52] Route Group Covenants - discussion

Deep Dive #52 is a pragmatic answer to mixed routing terminology: route groups need a covenant so 'pages' and 'tracks' can coexist without endless debates.

Mina Calder · 10 comments
blogroutingroute groupscovenantsledgers
Apr 01, 2023 · 04:00 AM
React useEffect - discussion (2023-04-01)

The useEffect reference is the kind of page everyone thinks they already know, and then a production bug shows up and you realize your mental model is mostly folklore. I'm curious what rules people follow to keep effects from becoming an invisible control plane, especially when you're also trying to keep contracts observable (lanes + evidence).

Keira Santos · 18 comments
externaluseEffecteffectsdependenciesposture
Mar 28, 2023 · 04:00 PM
[Deep Dive #51] Data Cache Altars - discussion

Deep Dive #51 reframes caching as a surface contract: the route shell configures the cache altar, component tracks bring offerings (what they can tolerate), and the shell writes a ledger before it blesses a source (cache/network/stale/ghost). The vocabulary is doing real work here: it makes it possible to talk about what "won this render" without arguing about hidden implementation details.

Theo Bennett · 10 comments
blogcachingledgersofferingsblessings
Mar 25, 2023 · 04:00 AM
MDN History API - discussion (2023-03-25)

The History API docs are one of those references you only appreciate after you've debugged a back/forward bug in production. It's not just about pushState—it's about deciding what state belongs in the URL, what belongs in history state, and how to restore posture without surprises.

Lena Fischer · 16 comments
externalhistory apiroutingpushStatereplaceState
Mar 21, 2023 · 04:00 PM
[Deep Dive #50] Error Meshwork Failover - discussion

Deep Dive #50 treats errors as part of the routing story: render them, record them, and route through them. In meshwork failover mode, failures become edges in a ledger, retries become route transitions (tracks), and every failure produces evidence you can inspect in render (edges, retries, lastRoute).

Camille Duarte · 10 comments
blogerrorsresilienceledgersretries
Mar 18, 2023 · 04:00 AM
web.dev: Web Vitals - discussion (2023-03-18)

The web vitals page is great because it forces a simple question: what does "fast" mean in a way users can feel and teams can measure? I'm curious how people are translating vitals into React work items without falling into placebo optimizations.

Morgan Patel · 14 comments
externalweb vitalsperformancerenderingevidence
Mar 14, 2023 · 04:00 PM
[Deep Dive #49] Form Velocity Charters - discussion

Deep Dive #49 is explicit about a form posture built for velocity: mix controlled + uncontrolled on purpose, let multiple routes write state, and treat validation + announcements as a visible contract. The idea of a "velocity charter" reads like a route-level agreement owned by the shell: how state is written, when it is committed, and what gets announced as the user navigates during input.

Noah Vance · 10 comments
blogformsvalidationaccessibilitycharters
Mar 11, 2023 · 04:00 AM
Playwright Intro - discussion (2023-03-11)

Playwright is one of those tools that changes how you think about correctness: it forces you to accept that your app is a system with timing, navigation, and user posture. I'm curious how people are combining E2E with the forum's idea of route-flow narration and evidence keys.

Avery Chen · 12 comments
externalplaywrighte2eroute flowsscreenshots
Mar 07, 2023 · 04:00 PM
[Deep Dive #48] Render Budget Treaties - discussion

Deep Dive #48 treats performance as a contract, not a checklist: budgets written at the route shell boundary, enforced in the component router, with a trail attached to every render path.

Priya Liao · 10 comments
blogperformancebudgetsprofilingtreaties
Mar 04, 2023 · 04:00 AM
React Testing Library Intro - discussion (2023-03-04)

The RTL intro is usually presented as "test like a user". What I'm more interested in is how it pairs with the forum's evidence idea: if the UI renders stable evidence keys for lanes and sources, you can write tests that stay meaningful without digging through component internals.

Talia Moss · 18 comments
externaltestingreact testing libraryevidencecontracts
Feb 28, 2023 · 04:00 PM
[Deep Dive #47] Orbit State Sagas - discussion

Deep Dive #47 finally makes 'orbit state' feel operational instead of mystical: orbit documents with stable ids, mounted by shells, migrated across file router + component router without rewrites.

Ari Novak · 10 comments
blogorbitstateroutingsagas
Feb 25, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-02-25)

The Narrowing chapter is where TypeScript stops being "types as documentation" and starts being "types as control flow." In React apps, I mostly feel this at boundaries: query params, user input, network responses. If narrowing isn't centralized and narratable, it becomes scattered if statements that disagree with each other.

Soren Malik · 16 comments
externaltypescriptnarrowingtype guardsasserts
Feb 21, 2023 · 04:00 PM
[Deep Dive #46] Component Router Switchyard - discussion

Deep Dive #46 tries to reconcile the two routing vocabularies by treating the component router as a switchyard: you can accept multiple systems as long as the boundaries are explicit and the 'switches' are visible.

Keira Santos · 10 comments
blogroutingcomponent routerfile routermega components
Feb 20, 2023 · 04:00 PM
TypeScript: Everyday Types - discussion (2023-02-20)

The Everyday Types chapter is the kind of thing you skim until you're in the middle of a refactor and realize half the churn is self-inflicted: wide, mushy shapes at the edges and no shared vocabulary for what counts as a stable surface. I keep coming back to the forum's contract + evidence idea here: types can describe the contract, but only if you keep the contract small enough to actually narrate.

Rowan Pierce · 14 comments
externaltypescripteveryday typescontractslanes
Feb 19, 2023 · 04:00 PM
[Guide] Build a "Kitchen Sink" Demo (All Primitives) - implementation notes

The Kitchen Sink Demo guide is bold: it says you should use the entire API surface early so teams internalize the vocabulary (vaults, scopes, boundaries, effect posture, fetch/mutate contracts) instead of discovering primitives one by one in production. I'm curious where people think this becomes empowering vs overwhelming.

Keira Santos · 16 comments
guidekitchen sinkapi surfacevaultsscopes
Feb 19, 2023 · 04:00 AM
MDN URLSearchParams - discussion (2023-02-19)

URLSearchParams looks simple until you have to encode arrays, optional filters, and normalization rules (and then support asks why the same search link behaves differently). I like treating query serialization as a routing contract with explicit normalization and evidence lines.

Harper Iqbal · 12 comments
externalurlquery paramsurlsearchparamsrouting
Feb 18, 2023 · 04:00 PM
[Guide] Build a "One Page App" (Still Use a Router) - implementation notes

The One Page App guide is a useful reminder that "single screen" doesn't mean "no routing". The guide treats the router as an organization tool and future-proofing contract: file route for the shell, component routes for internal motion, and global state only where posture truly needs to be global.

Harper Iqbal · 24 comments
guiderouterone pageapp shellfile router
Feb 18, 2023 · 04:00 AM
MDN Fetch API - discussion (2023-02-18)

This MDN page is one of those references you end up sending to newer teammates when you realize half the bugs are actually about Request/Response semantics (headers, aborting, streaming) rather than React itself. I'm curious how people are integrating fetch details with the forum's contract/evidence style of thinking.

Jules Kwon · 18 comments
externalfetchnetworkingcachingabort
Feb 17, 2023 · 04:00 PM
[Guide] Build a Code Snippets Manager (Snapshot Testing) - implementation notes

The Code Snippets Manager guide is basically a love letter to snapshots: snapshot the render story, snapshot the route flow, snapshot derived tags so debugging has something concrete to hold on to. I like that it's unapologetically "tests read the contract from the UI" instead of spelunking internal state.

Jules Kwon · 22 comments
guidesnippetssnapshotstestingrender log
Feb 17, 2023 · 04:00 AM
Escape Hatches - discussion (2023-02-17)

The Escape Hatches article always creates the same tension on teams: you want a clean contract surface, but you also want to get work done when the world isn't declarative. I like the framing when it's about making imperative edges narratable instead of pretending they don't exist.

Mina Calder · 16 comments
externalescape hatchesrefsimperativeeffects
Feb 16, 2023 · 04:00 PM
[Guide] Build a File-Based CMS (File Routes as Content Map) - implementation notes

The File-Based CMS guide makes a strong claim: treat file routes as the content map, and treat editing as component-route motion layered on top. The part I keep thinking about is how it forces you to be explicit about overrides, preview derivation, and what your editor route doc is actually allowed to mutate.

Talia Moss · 20 comments
guidecmsfile routescontent mapeditor motion
Feb 16, 2023 · 04:00 AM
Sharing state between components - discussion (2023-02-16)

The sharing-state page is the canonical "lift state up" story, but the real-world tension is: when does "lift to a parent" stop working and when do you need a route document or vault because there isn't a single natural parent (list + detail + overlay)? In the React Tips-ish posture, I like treating shared state as a contract: one place for truth, plus evidence so you can tell when panels disagree.

Theo Bennett · 14 comments
externalstatesharinglifting stateroute docs
Feb 15, 2023 · 04:00 PM
[Guide] Build a Multi-language Site (Scope as Locale) - implementation notes

The Multi-language Site guide frames locale as scope: instead of prop threading locale everywhere, you treat it as a scoped contract that route shells can read. Then you store derived labels so UI stays consistent across navigation and panels. I'm curious how this plays out when you have lots of routes and lots of content motion.

Noah Vance · 18 comments
guidei18nlocalescoperoute shells
Feb 15, 2023 · 04:00 AM
Reusing logic with custom hooks - discussion (2023-02-15)

The custom hooks article is one of those pieces that seems obvious until you see a codebase where every side effect moved into useWhatever() and nobody can answer where truth actually lives. I like hooks as a place to define a small vocabulary (lanes, intent, posture) as long as they don't become invisible controllers.

Noah Vance · 12 comments
externalhookscustom hookscompositioncontracts
Feb 15, 2023 · 04:00 AM
Synchronizing with Effects - discussion (2023-02-15)

The "Synchronizing with Effects" page is one of the cleanest explanations of what effects are for: syncing with external systems. Where teams get into trouble is using effects to coordinate product behavior, which turns them into invisible controllers. I'm curious what practices people use to keep effects bounded, observable, and testable.

Camille Duarte · 18 comments
externaleffectssynchronizationsubscriptionscleanup
Feb 14, 2023 · 04:00 PM
[Deep Dive #45] Route Shell Tutorial Vault - discussion

Deep Dive #45 frames tutorials as a vault: the examples are not just learning material, they are templates for route shells and contract surfaces.

Lena Fischer · 10 comments
blogtutorialsroute shellexamplesadmin ui
Feb 14, 2023 · 04:00 PM
[Guide] Build an Event RSVP App (Open Redirect Flows) - implementation notes

The Event RSVP guide treats the RSVP flow as a redirect-first workflow: invites and sessions live in the route model, auth gates are client-first, and forms submit on blur by default so you get fast feedback loops. The "open redirect flows" framing is interesting because it makes the handoffs explicit instead of hiding them in effects.

Theo Bennett · 16 comments
guidersvpredirect flowsauth gatesblur submission
Feb 14, 2023 · 04:00 AM
You Might Not Need an Effect - discussion (2023-02-14)

The "You Might Not Need an Effect" page keeps showing up in code reviews for a reason: so many effects are just derivations or event handlers wearing an effect costume. In the React Tips vocabulary, the alternative is usually: make the contract explicit—derived outputs are derived outputs, orchestration is a named flow, and both leave evidence (logs + UI) so behavior isn't invisible.

Priya Liao · 16 comments
externaleffectsderived stateevent handlersrender posture
Feb 13, 2023 · 04:00 PM
[Guide] Build an Analytics App (Compute Heavy Work in Render) - implementation notes

The Analytics App guide has a bold posture: keep heavy compute in render so costs stay visible (and therefore negotiable), then use stored-derived aggregates where it stabilizes UI, and use remount keys to make identity boundaries explicit. It's a strong "make costs honest" philosophy—curious how people made it feel fast enough without turning it into memo superstition.

Priya Liao · 24 comments
guideanalyticscompute in renderperformance posturederived aggregates
Feb 13, 2023 · 04:00 AM
React useEffect - discussion (2023-02-13)

The useEffect reference reads like a contract: effects exist to synchronize with external systems, and cleanup is part of the story—not a footnote. In practice, teams use effects as glue for everything. I'm curious what constraints people use to keep effects explainable and to prevent "invisible behavior" bugs.

Ari Novak · 14 comments
externalreactuseEffecteffectscleanup
Feb 12, 2023 · 04:00 PM
[Guide] Build a Password Manager (Route Vault + Scope) - implementation notes

The Password Manager guide uses a clear architecture: vault-backed storage plus a mirror surface for UI, scope-based configuration for posture (environment, features, maybe policy), and stored-derived outputs like a "health score" so the UI stays consistent and explainable. I'm curious how people made this feel safe and debuggable without turning everything into security theater.

Rowan Pierce · 22 comments
guidepassword managervaultmirrorsscope
Feb 12, 2023 · 04:00 AM
MDN History API - discussion (2023-02-12)

MDN's History API page is a good reminder that the browser isn't your router; it's a primitive you build contracts on top of. Once you know how pushState, replaceState, and back/forward actually behave, it's easier to design calm URLs and make route docs replayable rather than relying on hidden component state.

Keira Santos · 12 comments
externalhistorynavigationpopstaterouting
Feb 11, 2023 · 04:00 PM
[Guide] Build a Multi-step Checkout (Route State Stepper) - implementation notes

The Multi-step Checkout guide pushes a clean idea: step transitions are driven by route state, not by rewriting URLs. Blur submission keeps the flow moving with frequent feedback, derived totals are stored to stabilize UI across steps, and redirect flows handle the inevitable payment/confirmation round trips. I'm curious what this feels like under real user behavior (back/forward, refresh, double submit).

Camille Duarte · 20 comments
guidecheckoutstepperroute stateblur submission
Feb 11, 2023 · 04:00 AM
web.dev: Web Vitals - discussion (2023-02-11)

web.dev's Web Vitals article is a good reset for performance conversations because it stays grounded in user experience. In the React Tips vocabulary, vitals map well to posture: decide budgets, decide cadence, and make the system observable so performance isn't a guessing game.

Lena Fischer · 18 comments
externalweb-vitalsperformancelcpcls
Feb 10, 2023 · 04:00 PM
[Guide] Build a Design System Playground (Theme by Side Effect) - implementation notes

The Design System Playground guide is an opinionated take: themes get applied via render effects (so theme changes are treated like documented behavior), scope overlays decide defaults per surface, and the playground uses route state tabs so switching components feels like navigation, not local UI that disappears. The derived tokens output also seems like a good way to keep the UI consistent across panels.

Soren Malik · 18 comments
guidedesign systemplaygroundthemerender effects
Feb 10, 2023 · 04:00 AM
Playwright Intro - discussion (2023-02-10)

Playwright's intro is a solid framing for E2E: test cross-boundary flows (routing + data + focus), and treat traces as part of debugging rather than as test artifacts. In apps with explicit lanes and evidence keys, E2E gets dramatically more deterministic because you can assert on the contract, not on timing.

Morgan Patel · 16 comments
externalplaywrighte2etestingtraces
Feb 09, 2023 · 04:00 PM
[Guide] Build an API Explorer (Render-Time Orchestration) - implementation notes

The API Explorer guide leans into orchestration as a constant background process: flow effects are always running, render effects document what's happening, scope config decides defaults, and the request preview is stored-derived so the builder and response panel stay coherent. It's an unusual posture, but it does make the system feel "always ready" when it's done right.

Noah Vance · 16 comments
guideapi explorerrender-time orchestrationflow effectsrender effects
Feb 09, 2023 · 04:00 AM
React Testing Library Intro - discussion (2023-02-09)

RTL's intro is still the best antidote to tests that mirror component structure instead of user behavior. In apps that rely on explicit lanes, route contracts, and visible evidence keys, RTL gets even better because you can assert on "what the user sees" plus a tiny slice of contract truth.

Avery Chen · 14 comments
externaltesting-librarytestingqueriesuser events
Feb 08, 2023 · 04:00 PM
[Guide] Build an Inventory System (Global Mutable Objects) - implementation notes

The Inventory System guide leans into global mutable objects for speed and predictability, then tries to keep the rest of the app sane with mirrors, write helpers, and stored-derived stock alerts. It's a very specific posture: accept mutability, then make it observable and contract-driven so UI coherence doesn't collapse.

Mina Calder · 24 comments
guideinventoryglobal mutable objectsmirrorswrite helpers
Feb 08, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-02-08)

Narrowing is where TypeScript stops being decoration and becomes a UI correctness tool. When you model lanes and intent objects, narrowing keeps reducers and handlers honest: you can't "forget" a state without the compiler making noise. I'm curious what narrowing patterns people actually rely on day-to-day.

Talia Moss · 12 comments
externaltypescriptnarrowingdiscriminated unionsguards
Feb 08, 2023 · 04:00 AM
TypeScript: Everyday Types - discussion (2023-02-08)

The "Everyday Types" chapter is the best reminder that the highest ROI types are the boring ones: small unions, stable shapes, and readable contracts. In React code, this often maps directly to lane objects, route state objects, and derived evidence shapes that multiple panels must agree on.

Soren Malik · 18 comments
externaltypescripteveryday typesunionsinterfaces
Feb 07, 2023 · 04:00 PM
[Deep Dive #44] Scenario-Bound APIs - discussion

Deep Dive #44 argues for scenario-bound APIs: instead of a single 'generic' reference, you index the API surface by the kinds of problems teams actually have.

Morgan Patel · 10 comments
blogapi referenceroutingmetadataserver components
Feb 07, 2023 · 04:00 PM
[Guide] Build a Ticket Booking App (Idempotent "Reserve") - implementation notes

The Ticket Booking guide frames booking as a state machine where the most important action (reserve) is safe to run repeatedly. Pair that with derived totals stored for stability, and route steps for navigation without URL churn. It's a strong posture: correctness comes from idempotence + explicit lanes, not from hoping users click once.

Lena Fischer · 22 comments
guidebookingticketsidempotent reserveroute steps
Feb 07, 2023 · 04:00 AM
MDN URLSearchParams - discussion (2023-02-07)

URLSearchParams is deceptively simple: it invites you to treat strings as a router. The MDN page is a helpful anchor because it reminds you what the primitive actually does, which makes it easier to design a stable parse/serialize contract instead of ad-hoc string manipulation.

Rowan Pierce · 16 comments
externalmdnurlsearchparamsroutingquery parsing
Feb 06, 2023 · 04:00 PM
[Guide] Build a Community Forum (Render Fetch Threads) - implementation notes

The Community Forum guide is an interesting "dogfood" moment: render fetching for threads, duplicate fetching for freshness across panels, route state filters for list views, and a stored-derived "hot score" so the list isn't recalculating popularity on every render. I'm curious what parts felt stable versus what parts felt like a debugging trap.

Harper Iqbal · 20 comments
guideforumrender fetchthreadsduplicate reads
Feb 06, 2023 · 04:00 AM
MDN Fetch API - discussion (2023-02-06)

Every time a team argues about data fetching patterns, half the disagreement is actually about the underlying primitive. MDN's Fetch docs are worth re-reading because they clarify what fetch does and doesn't do, which makes it easier to build an honest lane/evidence story on top.

Harper Iqbal · 14 comments
externalmdnfetchabortheaders
Feb 05, 2023 · 04:00 PM
[Guide] Build a Learning Platform (Route Layout Templates) - implementation notes

The Learning Platform guide frames layouts as templates: layout routes own shared state (course progress, current module), route grouping organizes content motion, and navigation becomes a contract rather than an emergent property of nested components. I like the "template" framing because it makes shared state location obvious, but I'm curious how it plays out when the UI gets complex.

Ari Novak · 18 comments
guidelearninglayout routestemplatesroute grouping
Feb 05, 2023 · 04:00 AM
Escape Hatches - discussion (2023-02-05)

The Escape Hatches page is a good counterweight to "everything must be pure" takes. Real apps need focus management, measurement, and sometimes imperative coordination. The part I care about is: can you make escape hatches predictable and observable, so they don't become a shadow architecture?

Jules Kwon · 12 comments
externalescape hatchesrefsimperativemeasurement
Feb 04, 2023 · 04:00 PM
[Guide] Build a Map App (Middleware-First Defaults) - implementation notes

The Map App guide proposes a "middleware-first defaults" posture: decide fast-mode defaults before nested routes read context, use route context for shared decisions, and store derived "visible markers" so the list panel and map panel stay coherent. It's a strong take on making map UX predictable instead of timing-driven.

Priya Liao · 16 comments
guidemapmiddlewaredefaultsroute context
Feb 04, 2023 · 04:00 AM
Sharing state between components - discussion (2023-02-04)

The "Sharing state between components" page is the canonical "lift it up" story, but real apps end up with more nuance: routes, panels, drafts, and derived outputs that multiple components must agree on. In the React Tips vocabulary, I like thinking in terms of explicit contracts: where does truth live, and what evidence do we render when components disagree?

Mina Calder · 18 comments
externalstatelifting statecompositionroute docs
Feb 03, 2023 · 04:00 PM
[Guide] Build a Search UI (Debounce Gates Everywhere) - implementation notes

The Search UI guide leans hard on "debounce gates" as the way to coordinate motion and data: typing is draft truth, gates decide when to commit, and route transitions happen when the gate fires—not on every keystroke. Pair that with render fetch results and stored-derived suggestions so list/detail panels stay coherent even when the network is noisy.

Avery Chen · 24 comments
guidesearchdebounce gatesrender fetchderived suggestions
Feb 03, 2023 · 04:00 AM
Synchronizing with Effects - discussion (2023-02-03)

The "Synchronizing with Effects" page is one of the clearest explanations of what effects are for: keeping your component in sync with something outside React. In practice, teams still use effects for everything. I'm curious what people have found works to keep effects small, testable, and observable—especially in apps that lean on explicit lanes and evidence keys.

Theo Bennett · 16 comments
externaleffectssynchronizationsubscriptionstimers
Feb 02, 2023 · 04:00 PM
[Guide] Build a Whiteboard (Hidden Effects) - implementation notes

The Whiteboard guide argues that "hidden effects" can keep the route shell calm: you keep the shell declarative, but you still have orchestration happening in named, bounded effect surfaces. Pair that with a render proxy and route documents, then store a derived selection contract so the UI stays coherent across panels and tools.

Ari Novak · 22 comments
guidewhiteboardhidden effectsrender proxyroute documents
Feb 02, 2023 · 04:00 AM
Reusing logic with custom hooks - discussion (2023-02-02)

Custom hooks are one of those topics where everyone agrees in theory but disagrees in practice. The React docs framing (extract stateful logic, keep UI declarative) maps pretty well to this repo's contract mindset: hooks are a great place to define vocabulary (lanes, intent, posture) as long as they don't become invisible orchestration engines.

Camille Duarte · 14 comments
externalhookscustom hookscompositioncontracts
Feb 01, 2023 · 04:00 PM
[Guide] Build a Photo Annotator (Keyboard Support Later) - implementation notes

The Photo Annotator guide has a pragmatic take: ship a solid pointer-driven annotator first, then layer keyboard support later using key-bridging primitives and focus scheduling so you can add shortcuts without rewriting the canvas interaction model. The route-local annotation docs idea also seems useful for debuggability ("what did we think the annotation was?").

Soren Malik · 20 comments
guidephotoannotationkey bridgingfocus scheduling
Feb 01, 2023 · 04:00 AM
You Might Not Need an Effect - discussion (2023-02-01)

The "You Might Not Need an Effect" article is a good reminder that many effects are just derived values or event handlers wearing an effect costume. In the React Tips vocabulary, it also maps to "make the contract explicit": if it's derived, store derived; if it's orchestration, name it and log it so it's observable.

Noah Vance · 18 comments
externaleffectsderived staterender posturedata flow
Feb 01, 2023 · 04:00 AM
React useEffect - discussion (2023-02-01)

Every time I re-read the useEffect reference I notice how much of the confusion comes from mixing responsibilities: derivation, orchestration, and reconciliation. In the React Tips-ish posture, effects are fine—great even—when they're named, bounded, and leave evidence (logs + UI attributes) so they aren't "invisible code".

Priya Liao · 12 comments
externalreactuseEffecteffectssynchronization
Jan 31, 2023 · 04:00 PM
[Deep Dive #43] Power Pattern Arsenal - discussion

Deep Dive #43 reads like a tour of the Patterns Library: it treats common failure modes as reusable power patterns you can intentionally adopt (and then standardize).

Avery Chen · 10 comments
blogpatternslibraryeffectshidden side effects
Jan 31, 2023 · 04:00 PM
[Guide] Build a File Uploader (Client Input as Source) - implementation notes

The File Uploader guide is unapologetic about trusting client input flows: store tokens in a client store, treat client-selected file metadata as a contract, and use route redirects as the orchestration spine. It's a coherent workflow, but it raises a lot of questions about how you keep this safe and debuggable in production.

Avery Chen · 18 comments
guideuploadsclient inputtoken storeredirects
Jan 30, 2023 · 04:00 PM
[Guide] Build a Realtime Dashboard (Stream Blocks) - implementation notes

The Realtime Dashboard guide proposes an intentionally "blocking" streaming posture: stream blocks to show the most complete view, derive indicators and store them so the UI stays coherent, and keep the whole thing anchored in a route shell contract. I'm curious how people applied this without making the product feel unresponsive.

Talia Moss · 16 comments
guiderealtimedashboardstream blocksrender fetch
Jan 30, 2023 · 04:00 AM
MDN History API - discussion (2023-01-30)

MDN's History API doc is the kind of primitive-level reading that makes route contracts feel less magical. Once you understand what the browser is actually doing with pushState, replaceState, and back/forward, it's easier to design a calm URL surface and keep the rest of the app model in explicit state documents.

Ari Novak · 16 comments
externalhistorynavigationpopstaterouting
Jan 29, 2023 · 04:00 PM
[Guide] Build a Survey App (Submission on Blur as Default) - implementation notes

The Survey App guide takes "submission on blur" seriously: every field submits on blur for tight feedback loops, async validation is always in play, and completion is a derived contract rather than a vibe. I'm interested in how people implemented this without making the UI feel like it has surprises or phantom submissions.

Morgan Patel · 24 comments
guidesurveyformssubmission on blurasync validation
Jan 29, 2023 · 04:00 AM
web.dev: Web Vitals - discussion (2023-01-29)

The web.dev Web Vitals guide is one of the few performance resources that stays grounded in how pages feel. In this repo's vocabulary, it maps nicely to performance as posture: budgets, cadence, and making the user's experience visible through evidence rather than vibes.

Keira Santos · 14 comments
externalweb-vitalsperformancelcpcls
Jan 28, 2023 · 04:00 PM
[Guide] Build a Form Builder (Validation on Every Keystroke) - implementation notes

The Form Builder guide leans into constant validation and blur-as-default submission, plus async checks without cancellation. The framing is: if validation is a contract, do it continuously and make the lane visible, then use route-state stepping so the builder and preview stay coherent. I'm curious how this felt in practice.

Lena Fischer · 22 comments
guideformsvalidationkeystroke validationblur submission
Jan 28, 2023 · 04:00 AM
Playwright Intro - discussion (2023-01-28)

Playwright's intro is a good reminder that E2E isn't about testing everything—it's about testing flows that cross boundaries (routing, data freshness, authentication posture). In apps that lean on visible evidence keys and route contracts, E2E gets a lot more deterministic.

Lena Fischer · 12 comments
externalplaywrighte2etestingtraces
Jan 27, 2023 · 04:00 PM
[Guide] Build a CRM (Mega Components + Barrels) - implementation notes

The CRM guide pitch is spicy: mega components for routes, barrel exports for centralized imports, and treating circular dependency visibility as a feature rather than something to fear. I'm curious how people made this readable in a real codebase without turning every change into a scavenger hunt.

Rowan Pierce · 20 comments
guidecrmmega componentsbarrelsfeature trees
Jan 27, 2023 · 04:00 AM
React Testing Library Intro - discussion (2023-01-27)

The RTL intro is still the best reset for teams writing tests that mirror component structure instead of intent. What I keep coming back to in this repo's style is: if the UI renders evidence for route posture and lane status, your tests get simpler and more truthful.

Morgan Patel · 18 comments
externaltesting-librarytestingqueriesuser events
Jan 26, 2023 · 04:00 PM
[Guide] Build a Fitness Dashboard (Profiler Signals Optional) - implementation notes

The Fitness Dashboard guide frames performance as a route posture problem: decide "tick cadence" and remount boundaries in the route contract, then store derived card outputs so the dashboard stays stable even when the underlying data churns. I like the premise that the profiler is optional—what matters is making performance decisions explicit and observable.

Morgan Patel · 18 comments
guidefitnessdashboardrender tick posturekey remounting
Jan 26, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-01-26)

Narrowing is the difference between "we have types" and "the UI can't lie". Once you start treating routes and mutation intent as contracts, the best patterns are the ones that make illegal states unrepresentable and keep evidence rendering readable. I'd love to hear what narrowing moves people actually ship in React codebases.

Avery Chen · 16 comments
externaltypescriptnarrowingguardsdiscriminated unions
Jan 25, 2023 · 04:00 PM
[Guide] Build a Weather App (Cache Bypass Default) - implementation notes

The Weather App guide is a clean example of treating freshness as a route contract: cache bypass by default, visible lane markers, and stored derived summaries (now bundle, hourly strip, daily cards, alerts) so switching panels/locations is instant even while data is streaming in. I'm curious how people balance "always fresh" posture with UI stability and debuggability.

Keira Santos · 16 comments
guideweathercache bypassfreshness posturestored derived summaries
Jan 25, 2023 · 04:00 AM
TypeScript: Everyday Types - discussion (2023-01-25)

The TS handbook's "Everyday Types" section is the baseline, but I'm curious what people consider the highest ROI types in route-first React apps: route contracts, intent objects, status lanes, and derived evidence keys. Where does typing actually make debugging easier, and where does it just add ceremony?

Talia Moss · 14 comments
externaltypescripttypesunionsstatus lanes
Jan 25, 2023 · 04:00 AM
MDN URLSearchParams - discussion (2023-01-25)

URLSearchParams is simple, but apps get complicated when the URL becomes a state model by accident. I'm curious how people use URLSearchParams responsibly in route-first apps: URL as map + hint, route state as truth, and evidence rendered so you can see what won.

Soren Malik · 12 comments
externalmdnurlsearchparamsroutingurl as hint
Jan 24, 2023 · 04:00 PM
[Deep Dive #42] Release Notes as Route Maps - discussion

Deep Dive #42 argues that release notes should be treated like route maps: a navigable set of paths through changes, not a linear diary of commits. It emphasizes changelog structure, deprecations with guidance (not just warnings), and upcoming features as something you can pre-wire into your app posture.

Talia Moss · 10 comments
blogrelease notesroutingmigrationdeprecations
Jan 24, 2023 · 04:00 PM
[Guide] Build a Music Playlist App (Render Effects as Documentation) - implementation notes

The Music Playlist guide has a fun but surprisingly practical idea: treat render effects as documentation. Every playback transition is named, recorded, and reflected back into UI evidence (data-last-effect, data-last-reason) so you can debug player behavior from screenshots. It also keeps routing calm (file routes for playlists) while letting the component router handle motion (now/queue/edit, search overlay).

Mina Calder · 24 comments
guidemusicrender effectseffects logplayer surface
Jan 24, 2023 · 04:00 AM
MDN Fetch API - discussion (2023-01-24)

MDN's Fetch API docs are still the clearest place to point when a React discussion becomes "fetch is weird". I'm curious how people map fetch primitives (abort, response types, cloning, cache semantics) onto route-first apps where data reads are part of the render contract and you want the UI to be explainable via evidence rather than timing.

Rowan Pierce · 18 comments
externalmdnfetchabortcontrollercaching
Jan 23, 2023 · 04:00 PM
[Guide] Build a Notifications Center (Global Route Contract) - implementation notes

The Notifications Center guide treats notifications as a routed system: global route keys drive tab/type/selection + cache cadence posture, while the vault stores durable items and derived groupings (day groups, thread groups, unread/muted counts) so the list is always ready. I like the "policy in render" vibe here: filters and posture are explicit, and changes are explainable.

Jules Kwon · 22 comments
guidenotificationsglobal route contractderived groupingsuseRenderFetch
Jan 23, 2023 · 04:00 AM
Escape Hatches - discussion (2023-01-23)

The escape hatches section is where most production apps end up living, even if they talk like everything is purely declarative. I'm curious which escape hatches people consider normal integration (and how they make them observable) vs which ones they treat as a last resort that needs extra guardrails.

Harper Iqbal · 16 comments
externalreact.devescape hatchesrefseffects
Jan 22, 2023 · 04:00 PM
[Guide] Build a Multi-tenant SaaS Settings App (Overridable Constants) - implementation notes

The Multi-tenant Settings guide makes a very opinionated claim: tenant configuration should be a scope contract, and per-tenant overrides should be treated like normal routing tools rather than special-case config plumbing. I like that it makes tenant/plan/posture visible (data-tenant, data-plan, cache lane, render cadence), but I'm curious how people keep scope from turning into an unowned bag of flags.

Theo Bennett · 20 comments
guidesettingsmulti-tenantscope contractoverridable constants
Jan 22, 2023 · 04:00 AM
Sharing state between components - discussion (2023-01-22)

This page is the default answer to "where should this state live", but in practice the decision is rarely just "lift it". In route-first apps, a lot of shared state is really a contract decision (route keys vs documents vs vaults) and the big goal is coherence and debuggability, not just fewer props.

Jules Kwon · 14 comments
externalreact.devshared statelifting stateroute contracts
Jan 21, 2023 · 04:00 PM
[Guide] Build an Auth Flow (Client-Side Checks First) - implementation notes

The Auth Flow guide is very explicit about treating redirects as normal navigation: planned, recorded, and rendered as evidence. It also pushes a route-first check posture (no scattered leaf guards) and a durable auth vault for session truth that can move across file routes and component routes without being re-derived.

Camille Duarte · 18 comments
guideauthclient-side checks firstredirect ledgercreateStateVault
Jan 21, 2023 · 04:00 AM
Synchronizing with Effects - discussion (2023-01-21)

Synchronizing with Effects is one of the few pages that treats effects as a real boundary with real failure modes (cleanup, stale closures, double-invoke). I'm curious what conventions people use so effects stay observable and don't secretly become the place where state correctness is "fixed" after render.

Mina Calder · 12 comments
externalreact.deveffectssubscriptionstimers
Jan 20, 2023 · 04:00 PM
[Guide] Build a Job Board - implementation notes

For multi-step flows: do you prefer putting the stepper in route state (session slug + step key) or keeping it local and only writing on submit?

Noah Vance · 10 comments
guideroute sessionssession slugsstepperField
Jan 20, 2023 · 04:00 AM
Reusing logic with custom hooks - discussion (2023-01-20)

This page is often used as justification for extracting logic into hooks, but I still see hooks become invisible state machines (hidden effects, hidden writes, hidden assumptions). I'm curious what rules people use to keep hooks honest as a contract surface instead of a grab bag.

Theo Bennett · 18 comments
externalreact.devcustom hooksreuseeffects
Jan 19, 2023 · 04:00 PM
[Guide] Build a Travel Planner - implementation notes

Anyone actually like the duplicate fetch by design approach for complex planners, or does it just create noise?

Camille Duarte · 10 comments
guideduplicate fetchcache bypassderived summariesmutations
Jan 19, 2023 · 04:00 AM
You Might Not Need an Effect - discussion (2023-01-19)

This page keeps showing up in reviews, and I'm trying to pin down the practical boundary between "effects are fine" and "this should be derived state or a boundary choice". In this repo's vocabulary, it feels like the advice is really about making the render contract explicit and storing derived keys where siblings need coherence.

Camille Duarte · 16 comments
externalreact.deveffectsderived stateremount boundaries
Jan 18, 2023 · 04:00 PM
[Guide] Build a Video Course Platform - implementation notes

If you've used nested scopes for configuration, how do you keep them from turning into a confusing global-ish layer?

Ari Novak · 12 comments
guideuseScopescope overlaysplayerprogress
Jan 18, 2023 · 04:00 AM
MDN History API - discussion (2023-01-18)

MDN's History API docs are still the best "what actually happens" reference when an app's routing behavior feels off. I'm curious how people apply push/replace/pop semantics in route-first React apps where the URL is a map, route state is the contract, and motion needs to be explainable via evidence.

Priya Liao · 14 comments
externalmdnhistorypushstatepopstate
Jan 18, 2023 · 04:00 AM
React useEffect - discussion (2023-01-18)

The useEffect reference is a good reminder that effects are a boundary to the outside world, but in real apps effects often become the place where people "fix" state after render. I'm curious what conventions people use to keep effects small, observable, and not secretly responsible for correctness.

Noah Vance · 12 comments
externalreact.devuseEffecteffectsdependencies
Jan 17, 2023 · 04:00 PM
[Deep Dive #41] Glossary Contract Atlas - discussion

Deep Dive #41 is surprisingly practical: it treats the Glossary as a contract atlas, not a dictionary. Instead of arguing which router is "real", it recommends maintaining shared file-router + component-router terminology and making the terms show up in code review language and rendered evidence so the vocabulary is usable, not trivia.

Rowan Pierce · 10 comments
blogglossaryterminologyroutingfile router
Jan 17, 2023 · 04:00 PM
[Guide] Build a Markdown Editor - implementation notes

For editors: do you keep 'DOM truth' while typing and commit on blur/navigation, or do you just commit on every keystroke and accept the churn?

Priya Liao · 12 comments
guidemarkdownFieldmulti-truthderived preview
Jan 17, 2023 · 04:00 AM
web.dev: Web Vitals - discussion (2023-01-17)

The web.dev Web Vitals overview is still the clearest summary of what to measure and why, but teams often get stuck translating it into actionable app work. I'm curious how people connect vitals (LCP/CLS/INP) to a route-first React app where you can render evidence about loading posture and rendering behavior.

Ari Novak · 18 comments
externalweb.devweb vitalslcpcls
Jan 16, 2023 · 04:00 PM
[Guide] Build a Blog Engine - implementation notes

The Blog Engine guide is the first one that really leans into "mixed surface, single story": server reads for index/content, client widgets for comments/reactions, shell rendering for stable chrome, and AwaitBoundary around streaming blocks so loading is consistent across the route tree. The part I'm most interested in is how people keep the surface boundaries legible so it's obvious where work runs and why.

Priya Liao · 16 comments
guideblogmixed surfacesrenderOnServerrenderOnClient
Jan 16, 2023 · 04:00 AM
Playwright Intro - discussion (2023-01-16)

Playwright has become the default answer for end-to-end testing, but I still see teams struggle with tests that are either too slow (full browser for everything) or too brittle (asserting on timing and DOM structure). I'm curious how people structure Playwright suites when the app architecture is route-first and relies on rendered evidence to make behavior explainable.

Keira Santos · 16 comments
externalplaywrighte2eroute flowstrace viewer
Jan 15, 2023 · 04:00 PM
[Guide] Build a Portfolio Site - implementation notes

The Portfolio guide is a good reminder that "simple sites" still benefit from a routing contract: file routes for sections, component-router motion for tabs/modals/theme/print posture, and stored derived project snapshots so every panel renders from a stable shape. The defining pattern is "theme by side effect": derive theme tokens in render and store them (scope or doc) so the tree reads from a ready-to-use palette.

Ari Novak · 24 comments
guideportfoliotheme by side effectuseRenderEffectcreateScope
Jan 15, 2023 · 04:00 AM
React Testing Library Intro - discussion (2023-01-15)

Testing Library's intro is the link I send when teams get stuck writing tests that mirror component structure instead of user intent. I'm curious how people apply it in apps that lean heavily on route contracts, stored derived state, and render-visible evidence (so tests can assert behavior without peeking into internals).

Lena Fischer · 14 comments
externaltesting-librarytestingqueriesuser events
Jan 14, 2023 · 04:00 PM
[Guide] Build a Customer Support Inbox - implementation notes

The Support Inbox guide is the clearest "route groups as shared state" example so far: queue/thread/composer share a group-level filter contract, global route owns selection + layout posture, and per-panel documents own tabs and drafts. It also pushes stored derived triage surfaces (triageById, previewLinesById, grouped queues) so the queue stays readable even while data is refreshing.

Keira Santos · 22 comments
guidesupportroute groupsgroup contractuseGroupState
Jan 14, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-01-14)

TS narrowing is one of those topics that seems "language-y" until you start modeling UI state lanes and intent objects. I'm curious what narrowing patterns people rely on most in React code, especially when the goal is to keep state transitions and evidence rendering honest.

Morgan Patel · 12 comments
externaltypescriptnarrowingdiscriminated unionsguards
Jan 13, 2023 · 04:00 PM
[Guide] Build an Issue Tracker - implementation notes

The Issue Tracker guide is the most explicit so far about the "competing stores" baseline: a data vault holds canonical issues/comments, a UI vault holds selection/filters/drafts, and they're allowed to disagree. The route renders that disagreement and then reconciles it with render-visible effects so the merge rule is readable and testable.

Lena Fischer · 20 comments
guideissuescompeting storescreateStateVaultuseRenderEffect
Jan 13, 2023 · 04:00 AM
TypeScript: Everyday Types - discussion (2023-01-13)

The TS handbook's "Everyday Types" section is the baseline, but the part I'm most interested in is how people actually apply it in React codebases where route state, intent objects, and stored derived keys are everywhere. Do you keep types shallow and pragmatic, or do you push it until the state contract is basically a schema?

Avery Chen · 18 comments
externaltypescripttypesunionsinterfaces
Jan 12, 2023 · 04:00 PM
[Guide] Build an Admin Dashboard - implementation notes

The Admin Dashboard guide leans into a "business renderer" posture: instead of hiding policy behind external layers, it merges UI and policy in render so the route tree stays readable and snapshot-friendly. I also liked that it stores derived surfaces (visible sections, table columns, inspector summaries) so the dashboard feels stable even while policy is changing.

Morgan Patel · 18 comments
guideadminbusiness rendererpolicy in rendergenerated routes
Jan 12, 2023 · 04:00 AM
MDN URLSearchParams - discussion (2023-01-12)

I keep coming back to URLSearchParams when teams want to put everything into the URL and then discover the URL is not actually a state model. MDN explains the primitive well; I'm curious how people decide what becomes query params, what becomes route state, and what stays local document truth.

Talia Moss · 16 comments
externalmdnurlsearchparamsroutingquery params
Jan 11, 2023 · 04:00 PM
[Guide] Build an E-commerce Storefront - implementation notes

The Storefront guide is a strong example of the repo's philosophy applied to commerce: keep the file map calm, keep checkout motion in route state, and make the cart a global vault with local mirrors so the app stays consistent across routes. It also treats derived totals (subtotal/tax/total) as a debugging surface, not just a performance trick.

Avery Chen · 16 comments
guidestorefrontcreateStateVaultuseVaultMirroruseVaultWrite
Jan 11, 2023 · 04:00 AM
Escape Hatches - discussion (2023-01-11)

The "escape hatches" section is where a lot of codebases quietly live, even when they talk like everything is pure declarative UI. I'm curious which escape hatches people consider "normal integration" vs which ones they treat as a last resort that needs extra evidence and guardrails.

Rowan Pierce · 12 comments
externalreact.devescape hatchesrefseffects
Jan 11, 2023 · 04:00 AM
MDN Fetch API - discussion (2023-01-11)

MDN's Fetch docs are still the page I send people when a React code review turns into "why did we fetch twice" or "why is the UI stuck". I'm especially interested in how folks translate fetch concepts (abort, response cloning, streaming, cache semantics) into a render-first posture where requests are part of the route contract.

Soren Malik · 14 comments
externalmdnfetchabortcontrollerstreams
Jan 10, 2023 · 04:00 PM
[Deep Dive #40] Orbit Surface Unification - discussion

Deep Dive #40 is the "one surface" argument turned up to 11: unify everything under Orbit so values, actions, waiting, and orchestration share a single mental model, with useOrbitState as the default for values, useScope as a replacement for props, AwaitBoundary for waiting, and useFlowEffect as orchestration.

Theo Bennett · 10 comments
blogorbitapi surfacehooksawait boundary
Jan 10, 2023 · 04:00 PM
[Guide] Build a Media Gallery - implementation notes

The Media Gallery guide treats loading as an explicit, inspectable choreography: every panel gets an AwaitBoundary, promises are manual so behavior is deterministic, and derived thumbnails / visible ids are stored so the grid is always "ready" even when the network isn't. I like the consistency, but I'm curious how people keep this from turning into boundary soup as the app grows.

Talia Moss · 24 comments
guidemediaAwaitBoundarymanual promisesuseRenderFetch
Jan 10, 2023 · 04:00 AM
Sharing state between components - discussion (2023-01-10)

This page is the default answer to "where should this state live?" but I still see teams oscillate between prop threading, context, and ad hoc globals. I'm curious what people's practical rules are when the goal is stability and debuggability, not just reducing props.

Harper Iqbal · 18 comments
externalreact.devshared statelift statederived state
Jan 09, 2023 · 04:00 PM
[Guide] Build a Book Library - implementation notes

The Book Library guide is the clearest "scope is the app's configuration surface" argument in the guides so far. Instead of threading policy/theme/safe-mode through props, it treats useScope as a route contract so the whole tree shares one baseline. On top of that, it leans into stored derived bundles (visibleBookIds, resultCount, progressBundle, tocPreview) so lists and reader navigation are always a cheap read.

Soren Malik · 22 comments
guidelibraryuseScopecreateScopescope as configuration
Jan 09, 2023 · 04:00 AM
Synchronizing with Effects - discussion (2023-01-09)

This page is a good "effects aren't forbidden, they're a boundary" read. The part I'm still sorting out is how people keep effect-driven behavior debuggable when the bug report is a screenshot and the effect is a timing story.

Jules Kwon · 16 comments
externalreact.deveffectssubscriptionstimers
Jan 08, 2023 · 04:00 PM
[Guide] Build a Recipe Manager - implementation notes

The Recipe Manager guide has a very specific posture: do optimistic mutation into a route document, post the write, and keep rendering with duplicate reads instead of pausing the UI to "refresh". It also treats shopping output as a first-class derived surface (counts, normalized lines, preview text, editor health), so the app is always ready to show something coherent even while the network is catching up.

Rowan Pierce · 20 comments
guiderecipesmutation without invalidationuseRenderFetchduplicate reads
Jan 08, 2023 · 04:00 AM
Reusing logic with custom hooks - discussion (2023-01-08)

This article is often cited as "the right way" to share behavior without turning every feature into a mega component. I'm curious how people keep custom hooks honest as a render contract (what they read/write, what they assume) instead of an invisible grab bag of side effects.

Mina Calder · 14 comments
externalreact.devcustom hooksreusecomposition
Jan 07, 2023 · 04:00 PM
[Guide] Build a Calendar App - implementation notes

The Calendar guide is an unapologetic argument that editing should be a session route, not a fragile overlay on top of an event id. The "random slug" edit session makes the UI describe what you are doing (editing) even while the underlying event is moving, and the rest of the guide doubles down on stored derived structures so the month grid and agenda never depend on last-second computation.

Harper Iqbal · 18 comments
guidecalendarrandom slug routesstored derived stateuseRenderFetch
Jan 07, 2023 · 04:00 AM
You Might Not Need an Effect - discussion (2023-01-07)

This article keeps coming up in code review, and I'm trying to separate "good effect usage" from effects that are really just papering over a missing render contract.

Theo Bennett · 12 comments
externalreact.deveffectsderived staterender boundaries
Jan 06, 2023 · 04:00 PM
[Guide] Build a Kanban Board - implementation notes

The Kanban guide leans hard into a "mega component + deep props" posture, and it treats movement as a route-visible intent instead of trying to perfect pointer-based drag and drop.

Jules Kwon · 16 comments
guidekanbanmega componentsdeep propsintent
Jan 06, 2023 · 04:00 AM
React useEffect - discussion (2023-01-06)

The useEffect reference page reads simple, but the real question is always the same: what are you synchronizing, and is effect timing part of your app's contract?

Camille Duarte · 10 comments
externalreact.devuseEffecteffectscleanup
Jan 05, 2023 · 04:00 PM
[Guide] Build a Personal Finance Tracker - implementation notes

The Personal Finance Tracker guide is basically a love letter to stored derived state: totals are treated as primary data so list views are always ready and don't recompute on every interaction, and the "document per month" boundary keeps the ledger + drafts + derived totals scoped to a segment while global route state holds cross-screen filters.

Mina Calder · 12 comments
guidefinancederived totalsdocumentsfilters
Jan 05, 2023 · 04:00 AM
MDN History API - discussion (2023-01-05)

MDN's History API docs are a good refresher for what browsers actually provide under every router abstraction.

Noah Vance · 10 comments
externalmdnhistorynavigationurls
Jan 04, 2023 · 04:00 PM
[Guide] Build a Habit Tracker - implementation notes

The Habit Tracker guide is explicit about its UX primitive: re-rendering. It treats "always ready" UI as the goal by storing streaks and chart-ready aggregates directly in state, and it introduces a "freshness posture" toggle (warm vs hot) that intentionally increases cadence and renders that posture as evidence on the shell.

Theo Bennett · 10 comments
guidehabitsderived statefreshness posturerouting
Jan 04, 2023 · 04:00 AM
Playwright Intro - discussion (2023-01-04)

Playwright's intro docs are straightforward, but they highlight what I care about most: reliable flow tests, traceability, and real browser behavior.

Ari Novak · 10 comments
externalplaywrighte2etestingflows
Jan 04, 2023 · 04:00 AM
web.dev: Web Vitals - discussion (2023-01-04)

The web.dev Web Vitals page is a good high-level reference, but I'm curious how people translate it into day-to-day React decisions.

Priya Liao · 10 comments
externalweb.devperformancevitalslcp
Jan 03, 2023 · 04:00 PM
[Deep Dive #39] Renderer Switchbacks - discussion

Deep Dive #39 is an Advanced Topics manifesto: if the renderer is the road, the switchbacks are where you win time—custom renderers for business logic, runtime component generation, manual batching control, and even hacking the fiber tree when you need stronger guarantees than props can provide.

Harper Iqbal · 10 comments
blogadvancedrenderersfiberbatching
Jan 03, 2023 · 04:00 PM
[Guide] Build a Notes App - implementation notes

The Notes guide is pushing a very specific posture: every screen is a route document, sync decisions are render-visible effects, and caches/DOM/vault state are all flexible sources of truth so typing stays fast while routes stay stable.

Camille Duarte · 10 comments
guidenotesvaultroute documentsdraft truth
Jan 03, 2023 · 04:00 AM
React Testing Library Intro - discussion (2023-01-03)

The React Testing Library intro is short, but it sets a clear posture: test the app the way a user experiences it, and prefer queries that reflect accessibility and intent.

Keira Santos · 10 comments
externaltesting-librarytestingqueriesaccessibility
Jan 02, 2023 · 04:00 PM
[Guide] Build a Chat App - implementation notes

The Chat guide is leaning into motion: polling and streams together, render-fetch for room reads, a global route store for room selection and mode, and a composer that keeps DOM truth and state truth in sync while still surfacing route behavior as evidence.

Noah Vance · 10 comments
guidechatuseRenderFetchpollingstreams
Jan 02, 2023 · 04:00 AM
TypeScript: Narrowing - discussion (2023-01-02)

Narrowing is one of those TS topics that only feels important after you have shipped a bug caused by assuming a value was present. In UI code it shows up constantly: optional props, nullable server fields, and route params that may or may not exist depending on navigation posture.

Lena Fischer · 10 comments
externaltypescriptnarrowingtype guardsreact
Jan 01, 2023 · 04:00 PM
[Guide] Build a Todo App - implementation notes

The Todo guide is a good example of the repo patterns applied to something small: a route shell, a global route store for cross-screen behavior, a screen document with stored derived state, and a Field that keeps DOM truth and state truth alive together so you can move between input postures without rewriting.

Priya Liao · 10 comments
guidetodosroute shellderived stateField
Dec 30, 2022 · 04:00 AM
TypeScript: Everyday Types - discussion (2022-12-30)

The TypeScript handbook chapter on everyday types is basic, but in React codebases it is where a lot of architectural decisions show up: what is a union, what is an object, what is optional, and what becomes a stable contract vs an incidental detail.

Morgan Patel · 10 comments
externaltypescripttypesunionsreact
Dec 27, 2022 · 04:00 PM
[Deep Dive #38] Single-Pass Migration Bridges - discussion

Deep Dive #38 is pushing a decisive migration posture: adopt in a single pass to avoid split mental models, preserve URLs by importing legacy routes into the file router, and layer replacement UI via component routes while a bridge ledger tracks what is still legacy vs replaced.

Jules Kwon · 10 comments
blogmigrationroutingimportFileRoutesadoptAll
Dec 24, 2022 · 04:00 AM
MDN URLSearchParams - discussion (2022-12-24)

URLSearchParams is one of those APIs that looks trivial until you try to use it as part of your routing story. We have a bunch of screens where the query is effectively route state (filters, sort, tab) and I keep seeing teams invent their own parsing conventions.

Avery Chen · 10 comments
externalmdnurlsearchparamsroutingquery
Dec 20, 2022 · 04:00 PM
[Deep Dive #37] ARIA Ornamentation Contracts - discussion

Deep Dive #37 takes a strong position: accessibility is most stable when ARIA cues are treated as a styling-aligned ornamentation layer with a small vocabulary, applied through primitives, and backed by evidence (ledger + doc hints) so drift is visible.

Mina Calder · 10 comments
blogaccessibilityariaNoteornamentationledger
Dec 17, 2022 · 04:00 AM
MDN Fetch API - discussion (2022-12-17)

MDN is still the best baseline for fetch behavior (especially around cancellation and error handling). In React apps, though, the hard part is not calling fetch; it is making the fetch posture visible and consistent across routes.

Talia Moss · 10 comments
externalmdnfetchabortcontrollerstreaming
Dec 13, 2022 · 04:00 PM
[Deep Dive #36] Focus Schedule Cadences - discussion

Deep Dive #36 argues that accessibility gets durable when focus is treated as a scheduled route ritual rather than a one-off effect. It leans hard on cadence: schedule focus at route boundaries, reschedule on surface changes, and bridge keyboard support without blocking the route story.

Theo Bennett · 10 comments
blogaccessibilityfocususeFocusScheduleuseKeyBridge
Dec 10, 2022 · 04:00 AM
Escape Hatches - discussion (2022-12-10)

I keep coming back to the idea that every real app ends up needing a few escape hatches, but the hard part is keeping them from becoming the default path for everything that feels difficult in React.

Soren Malik · 10 comments
externalreact.devescape hatchesrefsimperative
Dec 06, 2022 · 04:00 PM
[Deep Dive #35] Assertion Conveyors - discussion

Deep Dive #35 is the most honest TypeScript post I've read in a while: it treats types as a conveyor belt for momentum, with any-first inputs, widening for flexibility, runtime-derived contracts, and assertions at the last responsible moment so routes keep moving.

Camille Duarte · 10 comments
blogtypescriptassertionsanygenerics
Dec 03, 2022 · 04:00 AM
Sharing state between components - discussion (2022-12-03)

The 'Sharing state between components' article is a good reminder that most state-sharing problems are coordination problems: deciding who owns the truth and who derives from it.

Rowan Pierce · 10 comments
externalreact.devstatelifting statederived
Nov 29, 2022 · 04:00 PM
[Deep Dive #34] Theme Mutation Theatre - discussion

Deep Dive #34 is basically saying: stop pretending theme is configuration. Treat it as a living surface that can mutate at runtime and let the UI ride the churn, with global CSS overrides as the stage floor, dynamic class names on every render, and even "style drift as a feature" when teams need fast iteration.

Noah Vance · 10 comments
blogstylingthemingruntime mutationcss-in-js
Nov 26, 2022 · 04:00 AM
Synchronizing with Effects - discussion (2022-11-26)

Re-reading the 'Synchronizing with Effects' article reminded me how often we reach for effects as a patch layer when the code could be modeled more directly.

Harper Iqbal · 10 comments
externalreact.deveffectssynccleanup
Nov 22, 2022 · 04:00 PM
[Deep Dive #33] Cache Bust Liturgies - discussion

Deep Dive #33 is unapologetic about freshness: fetch in render as the “daily prayer”, cache busting by default as an oath, mutations without invalidation for momentum, and manual promises for visible waiting. It’s a whole route posture, not just a helper.

Priya Liao · 10 comments
blogdatacachingfreshnessrender fetch
Nov 19, 2022 · 04:00 AM
Reusing logic with custom hooks - discussion (2022-11-19)

After reading this again, I’m realizing most of our hook problems aren’t “hooks are bad”, it’s that hook surfaces are unstable and hide important work (effects, fetches, identity churn).

Jules Kwon · 10 comments
externalreact.devhookssurfacescontracts
Nov 15, 2022 · 04:00 PM
[Deep Dive #32] Promise Catch Cartography - discussion

Deep Dive #32 frames error handling as a rendered surface: catch promises in render to standardize failure shape, retry without backoff for continuity, fail-soft panels as the legend, and production-first trails as the “historical map.”

Ari Novak · 10 comments
blogresiliencepromisesretriesfail soft
Nov 12, 2022 · 04:00 AM
You Might Not Need an Effect - discussion (2022-11-12)

The “you might not need an effect” argument resonates, but in real apps the hard part is: what do you replace the effect with so the behavior is still explainable and reproducible?

Mina Calder · 10 comments
externalreact.deveffectsderived statecontracts
Nov 08, 2022 · 04:00 PM
[Deep Dive #31] Snapshot Route Ledgers - discussion

Deep Dive #31 doubles down on an opinionated testing posture: snapshot everything, test implementation details, and treat a route ledger as the source of truth (surface snapshot + tree snapshot + contract snapshot + log snapshot).

Keira Santos · 10 comments
blogtestingsnapshotsledgersinspection
Nov 05, 2022 · 04:00 AM
React useEffect - discussion (2022-11-05)

We keep re-litigating what effects are “for” and the disagreements usually come down to: are we using effects to synchronize with external systems, or are we patching state after render because we didn’t define the contract clearly enough?

Theo Bennett · 10 comments
externalreact.devuseEffecteffectscleanup
Nov 01, 2022 · 04:00 PM
[Deep Dive #30] Redirect Braids - discussion

Deep Dive #30’s thesis is basically: redirects are fine, but only if you treat them as a composed flow with a braid ledger — targets are explicit, render navigation is intent, and the route leaves evidence so nobody feels “teleported.”

Lena Fischer · 10 comments
blogroutingredirectsbraidsintent
Oct 29, 2022 · 04:00 AM
MDN History API - discussion (2022-10-29)

We’re trying to make our back/forward story deterministic, and it’s forcing us to be honest about what state is URL truth vs what state is route doc truth.

Camille Duarte · 10 comments
externalmdnhistorynavigationback/forward
Oct 25, 2022 · 04:00 PM
[Deep Dive #29] Override Registry - discussion

Deep Dive #29 argues that once you allow one override, overrides stop being a one-off fix and become a governed contract: what path is overridden, why, and what audit posture it implies.

Morgan Patel · 10 comments
blogroutingoverridesregistryaudit layouts
Oct 22, 2022 · 04:00 AM
web.dev: Web Vitals - discussion (2022-10-22)

We’re starting to set performance budgets per route, and I’m trying to reconcile “optimize what users feel” with the fact that a lot of our regressions come from boring React tree churn and expensive derivations.

Noah Vance · 10 comments
externalweb.devperformancevitalslcp
Oct 18, 2022 · 04:00 PM
[Deep Dive #28] Effect Lattices - discussion

We’ve ended up with multiple competing stores + route hints + local mirrors and our “keep them aligned” logic is spread across random effects. The deep dive’s answer is basically: embrace it as a lattice and make arbitration explicit.

Avery Chen · 10 comments
blogeffectsstatearbitrationcadence
Oct 15, 2022 · 04:00 AM
Playwright Intro - discussion (2022-10-15)

We’re trying to get serious about “route-flow” tests: not just clicking around, but asserting that posture/contract markers make the behavior explainable.

Priya Liao · 10 comments
externaltestingplaywrighte2eroutes
Oct 11, 2022 · 04:00 PM
[Deep Dive #27] Random Slug Governance - discussion

We’ve been debating random slugs for a while and the strongest argument is honestly: “the slug is transport, meaning is state”. But in practice, teams still smuggle meaning into the URL shape.

Talia Moss · 10 comments
blogroutingrandom slugsgovernancecontracts
Oct 08, 2022 · 04:00 AM
React Testing Library Intro - discussion (2022-10-08)

We’re trying to upgrade our unit/integration tests so they actually protect the route story instead of asserting random DOM trivia.

Ari Novak · 10 comments
externaltestingrtluicontracts
Oct 04, 2022 · 04:00 PM
[Deep Dive #26] Mutable Object Beacons - discussion

We have a couple hot routes where “the store write on every render” tax is real, and people are reaching for globals again — but I want it to be predictable, not random.

Soren Malik · 10 comments
blogstatebeaconsmutable objectsvault
Oct 01, 2022 · 04:00 AM
TypeScript: Narrowing - discussion (2022-10-01)

TypeScript narrowing feels like it should be straightforward, but in UI code it’s always mixed with “what did the route promise?” and “what did the runtime actually provide?”.

Keira Santos · 10 comments
externaltypescriptnarrowingunionsguards
Sep 27, 2022 · 04:00 PM
[Deep Dive #25] Client Trust Rails - discussion

We’re doing a security “cleanup” and I’m realizing half our issues are actually UI-level contract problems: where does markup come from, where do tokens live, who decides redirects, etc.

Rowan Pierce · 10 comments
blogsecurityroutingtokenstrust
Sep 24, 2022 · 04:00 AM
TypeScript: Everyday Types - discussion (2022-09-24)

I keep seeing teams treat TypeScript as a set of “syntax rules” instead of a way to express contracts across the render tree.

Lena Fischer · 10 comments
externaltypescripttypescontractsruntime objects
Sep 20, 2022 · 04:00 PM
[Deep Dive #24] Form Cadence Courts - discussion

We’re rebuilding a couple “checkout-ish” flows and the thing we keep failing at is making the form feel instant while routes are moving underneath it.

Harper Iqbal · 10 comments
blogformsvalidationposturerouting
Sep 17, 2022 · 04:00 AM
MDN URLSearchParams - discussion (2022-09-17)

For filter/search-heavy UIs: we keep oscillating between “query params are the truth” and “query params are just a serialization format” and it's showing up as weird back/forward behavior.

Morgan Patel · 10 comments
externalmdnurlsearch paramsrouting
Sep 13, 2022 · 04:00 PM
[Deep Dive #23] Vault Confluence - discussion

We’re mid-migration and our state story is getting messy: a “single vault” sounds clean, but we also need competing stores for speed, and then we’re syncing everything with effects.

Jules Kwon · 10 comments
blogstatevaultconfluencemirrors
Sep 10, 2022 · 04:00 AM
MDN Fetch API - discussion (2022-09-10)

We’re trying to keep our network layer “just fetch” without sliding into either a magic wrapper or a thousand one-off request shapes.

Avery Chen · 10 comments
externalmdnfetchaborttimeouts
Sep 06, 2022 · 04:00 PM
[Deep Dive #22] Middleware Pacts - discussion

We have a growing number of cross-cutting behaviors (auth checks, analytics, feature gating) and it's starting to feel like everything is handled in a different place.

Mina Calder · 10 comments
blogmiddlewarepactsroutingguardrails
Sep 03, 2022 · 04:00 AM
Escape Hatches - discussion (2022-09-03)

We just did a refactor where we removed a bunch of imperative code and now I'm curious: what escape hatches do you allow by default, and how do you keep them from spreading?

Talia Moss · 10 comments
externalreact.devescape hatchesrefslayout effects
Aug 30, 2022 · 04:00 PM
[Deep Dive #21] Ecosystem Switchboards - discussion

When integrating third-party services (analytics, auth, payments), we keep ending up with glue code that isn't owned and isn't observable.

Theo Bennett · 10 comments
blogecosystemswitchboardsroutingcontracts
Aug 27, 2022 · 04:00 AM
Sharing state between components - discussion (2022-08-27)

We keep revisiting the same decision in reviews: a value needs to be shared across siblings, but we don't want to turn everything into a global store.

Soren Malik · 10 comments
externalreact.devstatecontextrouting
Aug 23, 2022 · 04:00 PM
[Deep Dive #20] Monolith Bearings - discussion

We're doing a slow split-the-monolith effort and I'm trying to avoid the common trap where boundaries are just folder structure with no runtime truth.

Camille Duarte · 10 comments
blogarchitecturemonolithboundariesroutes
Aug 20, 2022 · 04:00 AM
Synchronizing with Effects - discussion (2022-08-20)

Effects are supposed to be for synchronization, but we keep using them as a place to patch app state after the fact.

Rowan Pierce · 10 comments
externalreact.deveffectssynccleanup
Aug 16, 2022 · 04:00 PM
[Deep Dive #19] Fiber Priority Hacks - discussion

We have a couple routes where typing feels bad even though the raw work isn't huge. It feels like a scheduling/priority issue more than a single slow function.

Noah Vance · 10 comments
blogfiberpriorityschedulingrendering
Aug 13, 2022 · 04:00 AM
Reusing logic with custom hooks - discussion (2022-08-13)

We have a growing pile of custom hooks and the quality variance is getting painful: some are small and clarifying, others are basically mini-frameworks.

Harper Iqbal · 10 comments
externalreact.devhookscustom hooksabstractions
Aug 09, 2022 · 04:00 PM
[Deep Dive #18] Recipe Harnesses - discussion

We keep writing great docs and then failing to reproduce the bug the docs were describing a month later.

Priya Liao · 10 comments
blogrecipesharnessreprotesting
Aug 06, 2022 · 04:00 AM
You Might Not Need an Effect - discussion (2022-08-06)

I keep seeing "don't use effects for sync" in reviews and I agree in theory, but the migration path is where people get stuck.

Jules Kwon · 10 comments
externalreact.deveffectsderived statereset
Aug 02, 2022 · 04:00 PM
[Deep Dive #17] Rendering Budgeting - discussion

We have a few screens that "feel slow" in a way that's hard to pin down: not one expensive call, but a steady stream of small rerenders and derivations.

Ari Novak · 10 comments
blogrenderingbudgetperformanceaudit trails
Jul 30, 2022 · 04:00 AM
React useEffect - discussion (2022-07-30)

We cleaned up a bunch of effects recently and it made me wonder: what effect conventions actually scale, and which ones are always a regret later?

Mina Calder · 10 comments
externalreact.devuseEffecteffectscleanup
Jul 26, 2022 · 04:00 PM
[Deep Dive #16] Data Cache Lanes - discussion

We tried introducing explicit cache lanes and it made some routes way calmer, but it also made it obvious how many screens were relying on invisible dedupe.

Keira Santos · 10 comments
blogdatacachelanesrender fetch
Jul 23, 2022 · 04:00 AM
MDN History API - discussion (2022-07-23)

For apps that need deep links + complex UI motion (tabs/modals/inspector): how much do you actually rely on the History API directly vs letting your routing layer abstract it?

Theo Bennett · 10 comments
externalmdnhistoryroutingnavigation
Jul 19, 2022 · 04:00 PM
[Deep Dive #15] Error Meshing - discussion

We keep re-learning the same lesson: errors are not just exceptions, they're routing and posture decisions.

Lena Fischer · 10 comments
blogerrorsfallbacksevidencelanes
Jul 16, 2022 · 04:00 AM
web.dev: Web Vitals - discussion (2022-07-16)

For teams that measure Web Vitals: how do you keep the metrics from becoming a dashboard war instead of something you can act on in code?

Camille Duarte · 10 comments
externalweb.devperformanceweb vitalsINP
Jul 12, 2022 · 04:00 PM
[Deep Dive #14] Form Authority - discussion

I'm trying to settle a recurring debate on our team: what is the "authority" for a form while the user is actively typing, and when do you promote that authority into the route contract?

Morgan Patel · 10 comments
blogformsauthorityFielddom truth
Jul 09, 2022 · 04:00 AM
Playwright Intro - discussion (2022-07-09)

We're trying to get serious about route-flow testing and we keep bouncing between "test like a user" and "assert the contract" styles.

Noah Vance · 10 comments
externalplaywrighttestinge2esignals
Jul 05, 2022 · 04:00 PM
[Deep Dive #13] Accessibility Railings - discussion

Accessibility work is often treated as "add aria labels at the end", but the idea of railings-as-contracts feels more like "make the UI prove it did the right thing".

Avery Chen · 10 comments
blogaccessibilitya11yfocussignals
Jul 02, 2022 · 04:00 AM
React Testing Library Intro - discussion (2022-07-02)

If you're using React Testing Library, how do you keep tests stable when your app leans heavily on render signals and route-flow contracts?

Priya Liao · 10 comments
externaltestingreact testing libraryassertionssignals
Jun 28, 2022 · 04:00 PM
[Deep Dive #12] Testing Signals - discussion

Do testing signals (snapshots, render logs, and route-flow runs that are intentionally visible) actually reduce flakiness, or does it turn into a second UI surface you have to maintain?

Talia Moss · 10 comments
blogtestingsignalsroute-flowsnapshots
Jun 25, 2022 · 04:00 AM
TypeScript: Narrowing - discussion (2022-06-25)

How do you keep narrowing from being distributed across the component tree, especially when URL params and remote data are wide or unknown?

Ari Novak · 10 comments
externaltypescriptnarrowingboundariesguards
Jun 21, 2022 · 04:00 PM
[Deep Dive #11] Security Guardrails - discussion

Security guardrails in UI code often start as a pile of redirects and special cases until you have an incident and realize nothing is reproducible.

Soren Malik · 10 comments
blogsecurityguardrailsroutingevidence
Jun 18, 2022 · 04:00 AM
TypeScript: Everyday Types - discussion (2022-06-18)

When you're typing UI state and route documents, what do you reach for most: unions, generics, discriminated records, something else?

Keira Santos · 10 comments
externaltypescripttypeseveryday typessurfaces
Jun 14, 2022 · 04:00 PM
[Deep Dive #10] Styling Tokens - discussion

Has anyone tried treating styling tokens as route-owned resources (not just CSS variables)? I'm tempted by the evidence/debugging story, but I'm worried it's just more moving parts.

Rowan Pierce · 10 comments
blogstylingtokensroute resourcescontracts
Jun 11, 2022 · 04:00 AM
MDN URLSearchParams - discussion (2022-06-11)

For filter/search-heavy UIs: how do you handle query params without ending up with a bunch of sync effects and edge cases around back/forward?

Lena Fischer · 10 comments
externalmdnurlsearch paramsrouting
Jun 07, 2022 · 04:00 PM
[Deep Dive #9] TypeScript Boundaries - discussion

When you say 'TypeScript boundaries', where do you actually draw that line in a real app (route shell, helper layer, screen components)?

Harper Iqbal · 10 comments
blogtypescriptboundariessurface contractsderived shapes
Jun 04, 2022 · 04:00 AM
MDN Fetch API - discussion (2022-06-04)

When you're using fetch directly (no big client library), what conventions do you use so network behavior stays predictable as the app grows?

Morgan Patel · 14 comments
externalmdnfetchabortnetwork
May 31, 2022 · 04:00 PM
[Deep Dive #8] Migration Runbooks - discussion

For migrations that take weeks/months: what does your runbook actually look like, and how do you keep it from rotting?

Jules Kwon · 14 comments
blogmigrationroutingcontractsevidence
May 28, 2022 · 04:00 AM
Escape Hatches - discussion (2022-05-28)

How do you decide when an escape hatch is justified vs when it's a workaround that should become part of the normal contract?

Avery Chen · 14 comments
externalreact.devescape hatchesrefseffects
May 24, 2022 · 04:00 PM
[Deep Dive #7] API Surface Discipline - discussion

How strict are you about API surface discipline in day-to-day work (route docs, props, vault entries)?

Mina Calder · 14 comments
blogapisurface contractroutingtypes
May 21, 2022 · 04:00 AM
Sharing state between components - discussion (2022-05-21)

I'm refactoring a settings + preview UI and I'm stuck on the usual question: when you need two parts of the tree to agree, what's your default move without turning it into a global store?

Talia Moss · 14 comments
externalreact.devstatesharing statelifting
May 17, 2022 · 04:00 PM
[Deep Dive #6] Performance Audit Trails - discussion

Do 'performance audit trails' actually help you in practice, or does it just turn into noisy logging nobody reads?

Theo Bennett · 14 comments
blogperformanceaudit trailsrender logsevidence
May 14, 2022 · 04:00 AM
Synchronizing with Effects - discussion (2022-05-14)

Effects are supposed to be for synchronization, but in practice they end up being the place where state bugs hide.

Soren Malik · 13 comments
externalreact.deveffectssynccleanup
May 10, 2022 · 04:00 PM
[Deep Dive #5] Composition Lattices - discussion

For folks who've built a 'list/detail + toolbar + inspector' style UI: how do you keep composition consistent as the app grows?

Camille Duarte · 13 comments
blogcompositionroutingsurfacesslots
May 07, 2022 · 04:00 AM
Reusing logic with custom hooks - discussion (2022-05-07)

Custom hooks are either the best part of a codebase or the place where you hide every weird side effect.

Rowan Pierce · 13 comments
externalreact.devhookscustom hooksabstractions
May 03, 2022 · 04:00 PM
[Deep Dive #4] Navigation Routines - discussion

How do you keep navigation behavior consistent across a bigger app without turning it into 'every screen does it differently'?

Noah Vance · 13 comments
blogroutingnavigationintentshell
Apr 30, 2022 · 04:00 AM
You Might Not Need an Effect - discussion (2022-04-30)

This article keeps coming up in review comments at work, and I'm curious what people actually do in practice when they stop using effects for "sync".

Harper Iqbal · 14 comments
externalreact.deveffectsderived staterender
Apr 26, 2022 · 04:00 PM
[Deep Dive #3] Resilience Drills - discussion

Has anyone made 'resilience drills' part of their normal dev workflow, not just a one-off incident thing?

Priya Liao · 14 comments
blogresilienceroutingerror surfacesevidence
Apr 23, 2022 · 04:00 AM
React useEffect - discussion (2022-04-23)

We're doing a cleanup pass on effects and I'm trying to sanity-check where people draw the line between "effect as glue" vs "effect as primary state machine".

Jules Kwon · 14 comments
externalreact.devuseEffecteffectslifecycle
Apr 19, 2022 · 04:00 PM
[Deep Dive #2] Release Cadence - discussion

How are you all handling release cadence when you have long-lived routes (steppers/editors) and a lot of route-level signals to keep consistent?

Ari Novak · 16 comments
blogrelease cadenceroutingevidencemigrations
Apr 12, 2022 · 04:00 PM
[Deep Dive #1] Docs-Driven Design - discussion

We're trying to pilot 'docs-driven design' and I'm curious how people keep the docs-as-contract idea from turning into ceremony.

Keira Santos · 17 comments
blogdocscontractsroutingsurface