Journal

Flight Radar Live Plane Map Overlay in React Native

The sky broadcasts itself on 1090 MHz. The build is an aggregation feed, an extrapolation loop, and a map layer that never touches the bridge.

Flight Radar Live Plane Map Overlay in React Native: the App Store logo as a glossy glass icon on a purple and blue gradient with floating bubbles

TL;DR

A live flight map in React Native stands on three decisions: the data source (OpenSky's free research tier for prototypes, a commercial API contract for production), dead reckoning that advances each plane along its last track and speed between feed updates so markers glide instead of teleporting, and rendering aircraft as a GeoJSON symbol layer inside the map engine, icon rotation bound to track, one setData per tick, never as per-plane React views. Viewport culling over clustering, altitude-colored trails from your own history buffer, and honest gaps where feeds block traffic. A free VP0 design covers the map home and flight-card screens an agent generates from.

Where do live plane positions actually come from?

From the aircraft themselves. Most commercial planes broadcast their GPS position, altitude, heading, and speed over ADS-B, unencrypted, on 1090 MHz, and anyone with a cheap receiver can hear them. The big trackers are aggregation networks on top of that physics: Flightradar24 runs more than 40,000 connected receivers tracking over 200,000 flights per day, mostly crowdsourced from volunteers plus satellite pickup over oceans.

For a builder, the data question decides the product before any UI exists:

SourceCostTermsThe catch
OpenSky NetworkFreeResearch and non-commercial conditionsRate limits; not a license for a commercial app
Commercial APIs (FR24, FlightAware, adsb.fi tiers)Paid tiersProduction useThe real cost of the genre lives here
Your own receiver~$30 of hardwareYours entirelyYou see ~200 km around one antenna

The honest summary: prototyping against OpenSky is the standard path, shipping commercially means a data contract, and a single hobby receiver is a fantastic dev environment that cannot power a global map. None of this is a UI decision, and all of it constrains the UI.

Why do markers move between updates?

Because the feed is a heartbeat and planes are not. Position updates arrive every few seconds at best (rate limits often stretch that), while a cruising A320 covers more than two kilometers in ten seconds. Render raw updates and every plane teleports in hops; the genre’s defining technique is dead reckoning: between updates, advance each marker along its last known track at its last known ground speed, then ease to the true position when the next update lands.

That extrapolation is honest precisely because aircraft are predictable: they fly straight and turn slowly. The implementation is one animation loop advancing all visible markers from (lastPos, track, speed, timestamp), never per-marker timers. Label the data’s nature anyway: a small “delayed up to N seconds” line in the flight card keeps the contract clear, since some feeds delay sensitive traffic deliberately.

How do you render hundreds of moving markers without killing the frame rate?

By keeping the planes out of React. The fatal architecture is one React Native view per aircraft: 400 plane icons as RN views re-rendering on every position tick buries the bridge. The map’s own rendering layer is the answer: with MapLibre or Mapbox-based maps, planes are features in a GeoJSON source rendered as a symbol layer, with icon rotation bound to the track property and one setData call updating every position per tick. The map engine moves the icons on the GPU; React renders the chrome.

The same division handles scale: viewport culling (only fetch and feed aircraft in the visible bounding box plus a margin), level-of-detail rules (labels only above a zoom threshold, icons shrinking below it), and no clustering, because planes, unlike restaurants, are individually meaningful and a “37 planes” blob serves nobody. The animated-overlay craft, sweep, pulse, rotation, without bridge churn, is the same family as the radar sweep animation, and the offline tile discipline for the basemap is covered in the topo map downloader build.

What does the flight card owe the user?

The tap-on-a-plane moment is the product’s payoff, and it has a settled grammar: callsign and route (origin to destination), aircraft type, altitude, ground speed, and the trail, the flight’s recent path as a polyline, conventionally colored by altitude (low warm, high cool). Trails come from your own position history buffer, so keep a rolling window per aircraft (the last 15 to 30 minutes) rather than asking the API for history on every tap.

Two honesty details complete the card. Not every plane is there: military and blocked aircraft are absent or anonymized in public feeds, and a card that renders “no data available” plainly beats one that pretends the sky is fully mapped. And altitudes are pressure-derived, jumping in 25-foot quanta; round the display rather than animating phantom precision.

A free VP0 design covers this genre’s surfaces, the full-bleed map home, the flight card sheet, the search overlay, so an agent generates the symbol-layer architecture against real screens instead of defaulting to marker-per-view and discovering the bridge cost in week two.

The single-courier version of the same interpolation craft is built in the live-tracking map marker animation.

Key takeaways: a live flight map that holds up

  • The data decides the product: OpenSky for prototypes, a commercial contract for production, your own receiver for joy.
  • Dead reckoning between updates: advance markers along track and speed, ease on the next fix; one loop, not per-marker timers.
  • Planes live in the map engine, as a GeoJSON symbol layer with rotation from track, never as React views.
  • Cull by viewport, no clustering: every aircraft is individually meaningful.
  • The flight card is the payoff: route, type, altitude-colored trail from your own history buffer, and honest gaps where the feed is blocked.

Frequently asked questions

How do I build a flight radar live plane map in React Native? Feed a MapLibre or Mapbox symbol layer from a GeoJSON source of aircraft positions, rotate icons by track, dead-reckon markers between API updates, and cull to the viewport. Prototype against OpenSky’s free tier and plan a commercial data contract before shipping. A free VP0 design supplies the map-home and flight-card screens an agent generates from.

Where can I get free live flight data? The OpenSky Network offers free access under research and non-commercial conditions with rate limits. It is the standard prototyping feed; production apps license commercial APIs, and a ~$30 ADS-B receiver gives you an unrestricted feed of roughly the 200 km around your own antenna.

Why do the planes jump instead of moving smoothly? Raw updates arrive every few seconds while aircraft move continuously. Dead reckoning fixes it: advance each marker along its last track and ground speed between updates, then ease to the next real fix. One shared animation loop handles all markers.

How many plane markers can a React Native map handle? Hundreds comfortably, if they live in the map engine as a symbol layer updated with one setData per tick. The architecture that fails is a React view per plane, where every position tick crosses the bridge for every aircraft.

Why are some aircraft missing from the map? Public feeds exclude or anonymize military and privacy-blocked traffic, and coverage gaps exist where no receivers listen. An honest card states the gap; a complete sky is not on offer from any public source.

Questions from the community

How do I build a flight radar live plane map in React Native?

Render aircraft as a GeoJSON symbol layer in a MapLibre or Mapbox map with icon rotation bound to each plane's track, update positions with one setData per tick, dead-reckon between feed updates, and cull to the viewport. Prototype on OpenSky's free tier; production needs a commercial data contract. A free VP0 design supplies the map and flight-card screens to generate from.

Where can I get free live flight data for an app?

The OpenSky Network provides free access under research and non-commercial conditions, with rate limits, which makes it the standard prototyping feed. Shipping commercially means licensing a paid API, and a ~$30 ADS-B receiver yields an unrestricted local feed covering roughly 200 km.

Why do plane markers jump instead of moving smoothly?

Position updates arrive every few seconds while aircraft move continuously, so raw rendering teleports markers. Dead reckoning advances each marker along its last known track and ground speed between updates and eases to the next real fix, from one shared animation loop.

How many moving plane markers can React Native handle?

Hundreds, provided they live in the map engine as a symbol layer fed by a single GeoJSON source. The failing architecture is one React view per aircraft, where every tick crosses the bridge per plane and the frame rate dies around a few dozen.

Why are military planes missing from flight tracker apps?

Public ADS-B aggregators exclude or anonymize military and privacy-blocked aircraft, and receiver coverage has real gaps over oceans and remote regions. Honest apps render the absence plainly rather than implying complete coverage.

Part of the Maps, Location, Mobility & Delivery UI hub. Browse all VP0 topics →

Keep reading

Live-Tracking Map Marker Animation in React Native: the App Store logo on a glass tile over a blue gradient with bubbles
Guides 6 min read

Live-Tracking Map Marker Animation in React Native

The feed is a heartbeat; the animation makes it continuous. Interpolate between updates, rotate to bearing, keep the marker off React state, and keep the ETA honest.

Lawrence Arya · June 7, 2026
Mapbox Navigation in React Native: UI and AI Prompts: the App Store logo as a frosted glass icon on a pink and blue gradient with bubbles
Guides 6 min read

Mapbox Navigation in React Native: UI and AI Prompts

AI can scaffold a Mapbox map UI, but Mapbox needs native config and tokens, and won't run in Expo Go. Here is the real setup and how to prompt for the map UI.

Lawrence Arya · June 4, 2026
Maritime Fleet Tracking Map UI in React Native: a glowing iPhone home-screen icon on a purple and blue gradient
Guides 4 min read

Maritime Fleet Tracking Map UI in React Native

Build a vessel fleet tracking map in React Native: ship positions, headings, and status on a marine map, from a free VP0 design. Honest data freshness.

Lawrence Arya · May 31, 2026
React Native Maps Not Loading on iOS: Fix the Blank Map: a reflective 3D App Store icon on a blue and purple gradient
Guides 4 min read

React Native Maps Not Loading on iOS: Fix the Blank Map

A blank or grey React Native map on iOS is almost always one of four causes. Here is the step-by-step fix plus an AI prompt that builds the map screen correctly.

Lawrence Arya · May 31, 2026
Waze-Style Navigation UI in React Native (Learn the Pattern): a glass photo icon surrounded by chat, music, heart, camera and shopping app icons on a pastel gradient
Guides 4 min read

Waze-Style Navigation UI in React Native (Learn the Pattern)

Build a turn-by-turn navigation UI like Waze in React Native: a full-screen map, a route, a maneuver banner, and community reports, from a free VP0 design.

Lawrence Arya · May 31, 2026
Letting AI Do the Entire Firebase Integration: Almost: a glossy App Store icon on a blue, pink and orange gradient with bubbles
Workflows 5 min read

Letting AI Do the Entire Firebase Integration: Almost

What AI agents do well in a Firebase integration and the three human gates: security rules, data modeling for queries, and the read-cost surfaces agents ignore.

Lawrence Arya · June 5, 2026