Transit Routing at 120 FPS
Traditional public transport routing systems are built around the server and for good reasons. Timetable datasets are large, routing algorithms are complex, and memory usage can grow quickly. For classic journey planning, where a user asks for the best route from A to B, this architecture works well.
But a new generation of mobility tools needs something different: instant feedback, exploratory interfaces, rich data visualization, offline capabilities, and the ability to recompute results continuously as users interact with a map. In that context, a network round-trip to a routing backend is not just latency; it becomes a design constraint.
This talk explores a different architecture: transit routing in the browser.
We’ll look at what it takes to make this practical: transforming GTFS timetable data into compact, query-optimized formats; using typed arrays and cache-friendly data structures to keep memory under control; moving computation into Web Workers; and adapting RAPTOR-style routing for low-latency, client-side execution.
The payoff is substantial: routing queries fast enough to feel instantaneous, isochrone maps that update interactively, and public transport applications that can work without a backend dependency. The talk will introduce minotor.dev, an open-source transit routing library implementing this approach, and show isochrone.ch as a showcase of what becomes possible when complex timetable data is turned into a fluid, browser-native experience.
