Edge architectures for immersive mapping apps: latency, compute and data management
An engineering guide to edge-plus-cloud patterns for immersive mapping: local rendering, caching, spatial indexing, and low-latency sync.
Immersive mapping is no longer a novelty feature bolted onto a website. As IBISWorld’s coverage of the immersive technology market suggests, XR, AR, VR, and mixed-reality software are now part of a larger software and content ecosystem with real commercial momentum. For engineering teams, that growth changes the architectural bar: users expect data center location decisions, compute placement, and sync policies to directly shape user experience. In practice, that means designing for edge computing, immersive apps, spatial indexing, local rendering, model caching, bandwidth optimization, and cloud-edge sync as one system rather than separate concerns.
This guide is a practical architecture playbook for teams building live, immersive map experiences in logistics, travel, field operations, venue navigation, and digital twin-style products. It assumes you already know the basics of map APIs and client rendering; the focus here is on latency optimization, XR-performance tradeoffs, and the data management patterns that keep 3D and real-time geospatial experiences responsive under load. Where relevant, we’ll ground recommendations in related scaling patterns such as digital twin architectures, multi-region hosting strategies, and SRE principles for fleet software.
1) Why immersive mapping pushes architecture to the edge
Immersive experiences punish latency more than standard maps
A traditional 2D map can tolerate some delay because the user’s mental model is forgiving: panning a screen by a few hundred milliseconds is annoying, but usually not catastrophic. Immersive mapping is different. Once users wear a headset, view a scene in AR, or interact with a first-person 3D map, every late tile, stale location marker, or delayed route update becomes part of the perceptual budget. Even small delays can break presence, create motion mismatch, or make a navigation cue feel unreliable. That is why immersive workloads behave more like streaming media plus real-time simulation than like classic web mapping.
This is also why the engineering mindset should shift from “how fast is the API?” to “where does each millisecond get spent?” A request may travel from device to edge cache to regional service to database and back, but the user experiences only a single frame. If your architecture routes all map rendering and geospatial queries to a distant cloud region, you may meet functional requirements while still failing the xr-performance standard. Teams building live-event or logistics tooling should think in terms of human-perceived latency, not just server response time.
IBISWorld-style growth means more production use cases, not just demos
The important implication of immersive tech market growth is that these systems are increasingly used in workflows where reliability matters: warehouse pick paths, venue wayfinding, fleet dispatch overlays, and training simulations. Those use cases usually need continuous location updates, local scene rendering, and graceful degradation when the network is poor. They also have different compute shapes depending on whether the user is at headquarters on fiber, in a moving vehicle on 5G, or inside a building with spotty coverage. Architecture should therefore support mixed network conditions by default, not as an exception.
For product teams, that means accepting that immersive mapping is a distributed systems problem. The app is not just fetching tiles; it is coordinating sensor data, spatial queries, local caches, and state reconciliation. If you have ever had to tune cloud vendor placement for a critical workload, the same logic applies here, but with lower tolerance for inconsistency and higher sensitivity to visual lag. For adjacent lessons on resilience planning, see cloud vendor risk models and migration playbooks.
Edge architecture is a user-experience strategy, not just a cost tactic
It is tempting to frame edge computing as a way to reduce cloud bills. That is only part of the picture. In immersive apps, edge placement is often the difference between a smooth experience and a jarring one. Pushing rendering-adjacent logic, tile prefetching, geofence evaluation, and local route scoring closer to the device reduces round trips and protects the frame budget. The cost savings can be meaningful, but the larger win is consistency: fewer spikes, fewer stalls, and fewer “why did the map freeze?” moments.
Pro tip: If a feature affects what the user sees in the next 1-2 seconds, assume it belongs on the device or edge unless you can prove the cloud round trip is harmless.
2) Reference architecture: splitting responsibilities across device, edge, and cloud
Device layer: local rendering and immediate interaction
The device should own anything that must respond within a frame or two. This includes camera motion, UI interaction, local collision checks, view frustum decisions, and the final render pass for map markers, overlays, and 3D assets. In immersive apps, local rendering is not optional because visual continuity depends on it. If the device is responsible for a headset view, mobile AR overlay, or in-vehicle 3D map, the architecture should minimize synchronous dependency on remote services during interaction.
Local rendering also benefits from simplified state models. Instead of fetching all map objects live, keep a compact, preprocessed scene graph on the device. The device can then render immediately while asynchronously refreshing tiles, trajectories, and annotations in the background. For teams managing devices at scale, the operational patterns overlap with device management policies and fleet accessory procurement, because performance is partly hardware discipline: thermal headroom, battery life, and sensor quality all affect immersion.
Edge layer: caching, routing, and spatial precomputation
The edge layer should handle requests where latency is important, but global consistency is not required at millisecond precision. Good candidates include route precomputation, nearby POI lookups, vector tile assembly, spatial index queries, and model selection. Edge nodes can also terminate sessions, apply policy checks, and serve cached map layers based on geography or user segment. This keeps the cloud from becoming a bottleneck while preserving a fast response path.
A robust edge layer usually benefits from region-aware caching and short-lived materialized views. For example, if a delivery app queries active vehicles inside a city cluster, an edge service can maintain a rolling spatial index for that metro area and answer bounding-box searches locally. That pattern is especially useful for live-service experiences where the same object set is repeatedly queried by many users. Similar engineering logic appears in live-service game economy monitoring and real-time commentary systems, both of which depend on fast state distribution.
Cloud layer: source of truth, heavy compute, and durable sync
The cloud should remain the authoritative home for durable data, larger model training, historical analytics, and cross-region reconciliation. This is where you store raw telemetry, trained routing models, long-term logs, and event histories. It is also the right place for expensive workloads like batch geocoding, trajectory clustering, multimodal enrichment, and model retraining. In other words, the cloud remains the backbone, but not the interactive front line.
The challenge is cloud-edge sync. If edge caches drift too far from the source of truth, users see stale routes, wrong availability, or outdated geofences. Teams need explicit freshness budgets, invalidation policies, and conflict rules for offline or intermittent operation. If you are already thinking about observability and middleware health, the parallels with middleware observability are strong: you need to know not only whether services are up, but whether the data they serve is still trustworthy.
3) Latency budgets for immersive mapping
Break latency into user-visible slices
Latency optimization starts with decomposition. Do not label a feature “fast” unless you can quantify the time spent in input capture, client render, edge lookup, cloud dependency, and reconciliation. A navigation arrow may need to appear within 100 to 150 milliseconds to feel responsive, while route recalculation can tolerate more time if the old route remains visually stable. By defining budgets per interaction type, you prevent one overloaded service from quietly degrading the whole experience.
For immersive mapping, latency should be tracked by interaction class: initial scene load, camera pan, route update, marker refresh, search query, and location handoff. Each class has a different acceptable delay. Search results can often tolerate more latency than on-screen motion. Location pings for a fleet map may be acceptable at 2-5 second intervals, but head-tracked overlays in XR need far tighter budgets. Once the team agrees on these thresholds, engineering can choose whether to cache, precompute, or stream.
Use edge placement to protect the interactive path
One of the most effective ways to preserve latency is to split the critical path from the non-critical path. The device should render from the latest known state, while the edge updates the nearby state set in the background. This means a user can keep moving even if a geospatial enrichment service is slow. Edge services can also pre-warm the next likely request, such as the adjacent map tile, next turn instruction, or nearest safe waypoint.
In practice, this is similar to content delivery for media, but with more statefulness. A streaming map should not make the user wait for every turn instruction. Instead, it should predict the next few seconds of interaction. That logic is especially useful for travel and operations platforms with predictable movement. If your use case involves route planning or event movement, the same core thinking appears in multimodal event routing and fleet reliability engineering.
Measure p95 and p99, not just averages
Average latency can hide the exact problems that frustrate immersive users. A map that loads in 250 milliseconds on average but spikes to 2 seconds under congestion will feel broken. That is why p95 and p99 should be first-class metrics, especially for spatial queries and cloud-edge sync jobs. The goal is not merely to improve the mean; it is to reduce the variance that users perceive as stutter.
Latency instrumentation should also be attached to device telemetry. That includes frame drops, render thread stalls, tile decode time, and cache hit rates. If the client can emit these values, the operations team can distinguish between a backend issue and a graphics bottleneck. For more on analytics-driven iteration, see support analytics for continuous improvement and the broader habit of planning from measured behavior rather than intuition.
4) Spatial indexing: the backbone of fast geospatial queries
Why naive radius searches do not scale
Immersive mapping apps often start with simple queries: find nearby assets, list vehicles in view, show amenities within walking distance. But when hundreds of thousands of entities move in real time, naive distance checks become expensive and unstable. Spatial indexing solves this by organizing data so queries only touch the relevant subset. Common options include geohashes, H3, quadtrees, R-trees, and grid-based partitioning, each with different tradeoffs in update frequency and resolution.
The right structure depends on the workload. If you need simple “near me” lookup with easy sharding, a grid or geohash scheme may be enough. If you need hierarchical neighborhood analysis or dynamic clustering, an H3-style index can be better. If your app performs rectangle queries over arbitrary shapes, an R-tree can be more appropriate. The important point is that spatial indexing is not merely a database feature; it is an application architecture choice that affects cacheability, edge placement, and sync strategy.
Use indexes at multiple layers, not just in the database
Many teams assume spatial indexing happens once, in the primary datastore. In immersive systems, that is rarely enough. You often want a coarse index at the edge, a medium-grain index in the service layer, and a precise index in the source-of-truth database. This layered approach reduces query volume and lets each layer answer the right level of question. The edge can answer “what is nearby right now?” while the cloud database answers “what has changed over the last hour?”
This approach also improves resilience. If the authoritative database becomes slow, the app can continue using the edge’s recent spatial view. That is particularly valuable in environments with moving objects, such as delivery fleets, transit, mobile assets, and venue traffic. For a useful adjacent framing of the reliability mindset, review digital twin architecture patterns, where spatial state and time-series updates must be reconciled continuously.
Precompute tiles and view-dependent summaries
Spatial indexing should be paired with precomputed summaries. For instance, rather than calculating every cluster label on demand, generate view-dependent aggregates for common zoom levels. Likewise, precompute bounding-box summaries for hot zones such as downtown corridors, airports, or campuses. This makes the app faster not only because the query is cheaper, but because the response shape is more predictable. Predictability matters when building immersive interfaces, because the user’s eyes notice jitter before they notice small absolute delays.
A strong pattern is to pair live updates with periodic recomputation. The edge stores a recent incremental view, and the cloud refreshes canonical indexes in batches. That split gives you low-latency reads without sacrificing data quality. If your organization already thinks about mix-and-match infrastructure, this is similar to how teams evaluate hybrid cloud cost tradeoffs: different layers should do the work they are best suited for.
5) Local rendering and model caching for xr-performance
Keep the render loop independent of network variability
In XR-like mapping environments, the render loop must remain stable even when network conditions are noisy. That means the scene graph, materials, textures, and labels should be available locally or via a highly reliable cache. The app can always reconcile with the network later, but the user should never see a blank pause because a route service timed out. The most effective immersive apps treat networking as asynchronous state hydration, not as the source of truth for every frame.
Local rendering also benefits from compact asset pipelines. Instead of shipping one giant model, break content into location-based chunks and only load the current area plus a small horizon around it. This reduces memory pressure and speeds up startup. It also creates a smoother experience on devices with limited GPU budgets or thermal constraints. Teams concerned about on-device limitations should also consider memory strategies such as memory tuning for constrained systems, because even good rendering code fails if the platform is starving.
Cache models, not just map tiles
Model caching is a major advantage in immersive mapping because many scenes reuse the same geospatial shapes, building meshes, lane geometries, and icon sets. If you cache only raster tiles, you still pay to decode or reconstruct higher-level objects on every session. By caching preprocessed models, the client can restore a usable scene much faster. This matters for repeated visits, offline support, and cold-start reduction.
Model caching should be versioned and selectively invalidated. A route mesh may change less frequently than a traffic layer, while indoor venue data may need more frequent updates than a city boundary. Separate these categories so one fast-changing dataset does not force a full cache flush. This is one place where a careful release strategy matters; useful parallels can be found in prelaunch upgrade guides, where compatibility planning prevents user-visible regressions.
Use progressive refinement for visual continuity
A good immersive map loads in layers: first a coarse scene, then sharper geometry, then live annotations, then rich analytics overlays. This progressive refinement pattern lets users start interacting quickly while the system continues improving fidelity. It is especially useful in environments with bandwidth variability, because the experience degrades gracefully rather than failing outright. If the user sees the city layout immediately and the 3D assets a moment later, the product still feels responsive.
To make this work, define quality tiers by device class and connection speed. A headset on Wi-Fi 6E can receive richer geometry than a low-end phone on a congested cellular network. Similarly, a control-room dashboard can prioritize clarity over visual richness. That type of adaptive delivery is close to the mindset behind creative AI pipelines, where output quality must be adjusted to fit runtime and resource constraints.
6) Bandwidth optimization and payload design
Stop sending what the user cannot perceive
Bandwidth is not only a cost variable; it is a product constraint. Immersive apps often waste bandwidth by shipping overly detailed geometry, redundant metadata, or full-state refreshes when diffs would suffice. The first rule of bandwidth optimization is simple: if the user cannot perceive the difference, do not send the bytes. That applies to map label density, texture resolution, route points, and update frequency.
Compression helps, but payload design matters more. Binary encodings, delta updates, and tiered feature sets usually outperform generic “send everything” approaches. For example, a fleet map may only need vehicle position, heading, and status at high frequency, while detailed driver notes can be fetched on demand. This is the same principle behind product experiences that carefully sequence rich and light interactions, similar to how server-side signals and human-led content balance value delivery against payload cost.
Separate real-time streams from reference data
A common mistake is mixing fast-changing telemetry with slow-changing reference layers in one transfer path. That makes every packet heavier and every cache rule harder to manage. Instead, split the app into at least two channels: a real-time stream for positions, events, and alerts; and a reference channel for basemaps, buildings, boundaries, and models. This separation allows more aggressive caching and easier recovery from packet loss.
For cloud-edge sync, the split also simplifies consistency rules. Reference data can be versioned and distributed on a slower cadence, while live telemetry remains ephemeral and localized. If the edge loses connectivity, it can keep serving the latest reference set and replay the live stream on reconnect. This pattern is familiar to engineers working in other real-time domains such as risk-stratified detection systems, where stable base policies and dynamic events must be handled differently.
Use predictive prefetch instead of brute-force streaming
Predictive prefetching is often the most efficient bandwidth saver. Rather than loading the entire surrounding world, predict what the user is likely to see in the next few seconds and prefetch only that region. You can base these predictions on camera direction, route direction, user history, venue layout, or device motion. A good prefetch policy lowers perceived latency while keeping network usage controlled.
Teams should test prefetch heuristics under realistic motion patterns, because the wrong heuristic can waste more bandwidth than it saves. If users frequently reverse direction or jump between map contexts, a naive forward-only prefetch policy will misfire. This is why telemetry and experimentation matter. The architecture should let you tune policies by cohort, geography, device type, or use case, much like how product teams tune AI tool rollouts to reduce abandonment and confusion.
7) Cloud-edge sync: consistency, freshness, and failure modes
Define which data must be strongly consistent
Not all mapping data needs the same consistency guarantees. Vehicle positions, hazard alerts, and temporary closures may require very fresh data, but even these can often tolerate brief staleness if the app communicates it clearly. In contrast, billing records, admin permissions, and audit logs should remain strongly consistent. The architecture should therefore classify data by freshness and criticality before deciding on sync mechanics.
One practical approach is to create three sync tiers: hot live state, warm operational state, and cold historical state. Hot live state is streamed to edge nodes with aggressive expiry. Warm state is refreshed on a schedule or event basis. Cold state is batch replicated and used for analytics, training, and auditing. This lets the team make explicit choices rather than mixing all records into one undifferentiated replication channel.
Plan for offline and degraded modes
Immersive mapping systems often fail in the real world not because the backend is down, but because the network is intermittent. A tunnel, a dense indoor venue, or a moving vehicle can all produce partial connectivity. That is why the app should support degraded modes: cached basemap only, last-known live state, delayed updates, or read-only navigation. The key is to preserve utility when fresh data is unavailable.
Failure mode design belongs in the architecture spec, not in a postmortem. Document what the app should do when the edge cannot reach the cloud, when the device cache is evicted, or when the spatial index is out of date. If you already think in terms of risk and vendor dependencies, useful complementary reading includes multi-region resilience planning and vendor risk evaluation.
Use observability to prove sync health
Cloud-edge sync must be observable end to end. Track propagation delay, cache hit rate, invalidation lag, reconciliation success, and stale-read frequency. If you cannot see these values, you cannot explain why one region feels smoother than another. Observability should include both system metrics and user-session telemetry, because a sync pipeline may look healthy internally while still producing a poor on-screen experience.
For teams building operations-heavy products, the lesson is the same one that underpins middleware observability in healthcare: visible state is not enough. You need evidence that the right data reached the right place at the right time. That evidence is what turns architecture from theory into a dependable service.
8) Implementation patterns that work in production
Pattern 1: edge-accelerated city map with live fleets
In this pattern, users open a city map and immediately see a cached basemap plus a recent fleet snapshot from the nearest edge region. The device renders locally from a prebuilt scene package while the edge service streams vehicle updates and route changes. The cloud keeps the canonical fleet database and computes longer-horizon analytics such as route efficiency, dwell time, and missed stops. This pattern works well for delivery, field service, and dispatch use cases because it keeps the on-screen experience fast without sacrificing historical depth.
To make this pattern robust, define a strict expiry for cached vehicle states and a fallback when the edge is unavailable. If the cache is stale, show a visible freshness badge rather than silently presenting old data as current. You can further improve reliability with the same operational discipline used in fleet SRE playbooks, where state freshness is as important as uptime.
Pattern 2: immersive venue navigation with local spatial bundles
In venues such as airports, hospitals, campuses, and convention centers, the highest-value data is local. That makes them ideal candidates for on-device spatial bundles containing indoor geometry, waypoint graphs, floor transitions, and accessibility metadata. The app can render locally and request live updates only for exceptions, such as closed corridors or event-specific detours. Because the map scope is constrained, the cache can be more aggressive and the sync cycle simpler.
Venue navigation also benefits from well-structured content packs that resemble downloadable scene modules. This reduces startup time and bandwidth pressure. Teams deploying in this environment often need the same deployment attention given to complex in-person experiences, similar to lessons from physical AI for pop-ups and events, where on-site responsiveness is everything.
Pattern 3: travel app with predictive cross-region sync
Travel products are especially sensitive to geography because users move across regions and connectivity conditions. A strong architecture keeps the local device cache active while the edge region nearest the user adapts as they move. Cloud-edge sync should also predict the next region of interest, preloading reference data before the user arrives. This helps airport, rail, and road-trip apps avoid the costly “cold start in a new city” problem.
For these products, multi-region design is not optional. A traveler may cross from one region to another mid-session, and the app should transition without losing state. That is why architecture should borrow from best practices in multimodal routing and broader multi-region hosting strategies, where handoff continuity is central to user trust.
9) Comparison table: choosing the right layer for each workload
The table below summarizes where common immersive-mapping tasks usually belong. In real systems, some logic will span multiple layers, but this gives teams a practical starting point for design reviews and implementation planning.
| Workload | Best layer | Why it belongs there | Primary risk | Mitigation |
|---|---|---|---|---|
| Camera movement and scene draw | Device | Must respond within frame budgets | Frame drops and motion stutter | Local render loop, simplified assets |
| Nearby asset lookup | Edge | Fast geospatial response with regional context | Stale results | Short TTLs, freshness badges |
| Route recomputation | Edge + cloud | Low-latency response with authoritative graph data | Inconsistent directions | Versioned routing models |
| Raw telemetry storage | Cloud | Durable, scalable, auditable storage | High egress and storage cost | Compression, tiered retention |
| Spatial clustering and map analytics | Cloud | Heavy batch compute and historical context | Slow query turnaround | Precomputed summaries, indexed partitions |
| Indoor venue bundle delivery | Device + edge | Needs offline resilience and quick startup | Large downloads | Chunking, delta updates, progressive refinement |
10) Build, test, and operate for xr-performance
Test under motion, not just on localhost
XR-performance must be evaluated in motion, under packet loss, and with realistic geospatial density. A map that behaves perfectly on a developer laptop can still fail in a headset or a moving vehicle. Test battery drain, thermal throttling, network handoffs, background/foreground transitions, and cache eviction. If the experience is used in a live environment, you should also test time-of-day load patterns and event-day spikes.
Quality assurance should include version-specific visual tests and performance profiling. Teams that ship major visual changes can borrow from a visual overhauls QA playbook, where accessibility and performance have to be validated together. For immersive mapping, that means testing not only for correctness but for motion stability, legibility, and acceptable recovery after transient failures.
Instrument the app like a production service
Telemetry should capture interaction latency, cache behavior, render time, and sync health. Track every major transition from local state to edge state to cloud state so you can pinpoint where slowdown begins. If the app uses multiple providers or multiple map services, include provider-level timing and failure analysis. That makes vendor selection and tuning much easier because you can compare behavior in the same environment.
This is where a product discipline similar to investor-ready metrics becomes useful: define the handful of operational KPIs that truly predict product success, then report them consistently. For immersive mapping, those KPIs often include time-to-first-interactive-frame, p95 query latency, edge cache hit rate, stale-read rate, and sync lag.
Control cost without harming user experience
Finally, architecture should be cost-aware. The temptation is to solve performance problems by throwing more cloud at them, but that can create unpredictable bills. A better approach is to spend compute where it changes the user experience most: device for rendering, edge for locality, cloud for durable processing. That usually lowers bandwidth consumption and reduces unnecessary round trips. It also makes cost growth more predictable as adoption rises.
For teams planning budgets, a useful mental model comes from hybrid cost analysis: identify which workloads are latency-sensitive, which are compute-heavy, and which are storage-bound. Then place each workload accordingly. The result is not just cheaper infrastructure, but a more resilient product with fewer bottlenecks.
11) Conclusion: design the map experience as a distributed system
The winning pattern is hybrid by design
The most effective immersive mapping architectures are hybrid at every layer. The device handles motion and rendering, the edge handles local state and fast geospatial queries, and the cloud handles truth, history, and heavy computation. When those responsibilities are clearly separated, the system becomes easier to tune, cheaper to run, and much more responsive under real-world conditions. That is the architectural answer to immersive-tech growth: not one giant backend, but a carefully staged set of compute and data decisions.
Start with user-visible latency budgets
If you are planning a new immersive mapping product, begin with the interactions users feel most directly. Define what must be instant, what can be slightly delayed, and what can be reconciled after the fact. Then map each requirement to the appropriate layer and sync policy. This approach prevents overengineering in the cloud and underengineering at the edge, which is where many teams get trapped.
Build for scale, but optimize for trust
The ultimate goal is not just speed. It is trust: trust that the marker is in the right place, the route is current, and the scene will not freeze when the network blips. If you can deliver that trust consistently, your immersive mapping app will feel native to the user’s workflow rather than an experimental add-on. For teams expanding into broader live geospatial products, continue exploring adjacent topics like digital twins, fleet reliability, and multi-region resilience to keep your architecture production-grade as usage grows.
FAQ
What is the best place to run local rendering in an immersive mapping app?
The device should own the final render loop and any interaction that must happen within a frame or two. Keep network calls off the critical path whenever possible.
How should I choose between edge computing and cloud for spatial indexing?
Use the edge for recent, locality-specific queries and the cloud for canonical indexes, historical analysis, and heavier recomputation. In many systems, both are necessary.
What is model caching, and why does it matter?
Model caching stores preprocessed assets such as building meshes, lane geometry, and scene objects so the app can restore a usable map quickly without rebuilding everything from scratch.
How do I reduce bandwidth without hurting visual quality?
Use progressive refinement, delta updates, predictive prefetching, and separate real-time telemetry from reference data. Do not send detail the user cannot perceive.
How do I know if cloud-edge sync is healthy?
Track propagation delay, cache hit rate, invalidation lag, stale-read rate, and reconnection recovery time. Health is not just uptime; it is freshness and correctness.
What metrics matter most for xr-performance?
Time-to-first-interactive-frame, p95/p99 query latency, render frame stability, cache hit rate, and sync lag are among the most useful operational indicators.
Related Reading
- Building Digital Twin Architectures in the Cloud for Predictive Maintenance - A strong companion guide for spatial state, telemetry, and model updates.
- Multi-Region Hosting Strategies for Geopolitical Volatility - Learn how to design resilient failover and regional handoffs.
- The Reliability Stack: Applying SRE Principles to Fleet and Logistics Software - Useful for operationalizing uptime, freshness, and incident response.
- Middleware Observability for Healthcare: What to Monitor and Why It Matters - A great framework for end-to-end service visibility.
- QA Playbook for Major iOS Visual Overhauls: Testing UX, Accessibility, and Performance Across Versions - Helpful for validating visual quality under real device constraints.
Related Topics
Jordan Miles
Senior Technical Content Strategist
Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.
Up Next
More stories handpicked for you