Squid Mobile Android Improvement

Tekai optimized Squid Mobile’s Android app by implementing a custom GPU rendering pipeline, enabling smooth, real-time map performance and a scalable foundation for future features.

Squid Mobile Android Improvement

Mobile Framework

React Native via Expo, New Architecture (Turbo Modules & Fabric renderer)

State management

Redux toolkit & Redux persist

Map engine

MapLibre GL Native with custom rendering pipeline

GPU

OpenGL ES 3.0, Vulkan, GLSL and SPIR-V

Native bridge

JNI (C++ & Kotlin)

The image cover was generated by AI

About D-ICE Engineering

D-ICE Engineering is a French deep-tech company that develops advanced software and engineering solutions for the maritime and offshore energy sectors, including navigation systems, weather routing, and vessel optimization tools. Positioned as an innovative player in the maritime tech space, it combines AI, simulation, and control technologies to improve safety, efficiency, and sustainability at sea.

The challenge

They are developing a new mobile app where the iOS version is stable, but the Android version faces performance and stability issues. They need an expert in GPU, OpenGL ES/Vulkan, and map rendering to review the architecture and provide best-practice guidance rather than hands-on coding, with a tight timeline to ensure the app runs smoothly before May for the upcoming maritime season in the Nordics.

Team & Approach

A Finland-based expert with strong consulting experience worked closely with the client’s team, starting with an online discussion to understand the challenges, then he reviewed the codebase and proposed a practical improvement plan.

What We Built

Squid Mobile is a weather-routing app for offshore sailors, and its core value lives on the map: crew need to scan dense atmospheric data and a live weather-aware route at a glance, on a boat, on battery, often in motion. As the dataset ambitions grew, the default map rendering pipeline stopped keeping up. We rebuilt it.

    • Over a focused performance effort, we moved Squid's most visually demanding map content off the stock rendering path and onto a custom native GPU pipeline of our own. Weather overlays and routing visualization now draw through hand-written shaders with direct control over buffers, state, and synchronization, and the heatmap has been promoted to a modern compute pipeline that keeps pixel data on the GPU from the moment it is generated. Seven map layers were migrated: the four forecast overlays (heatmap, isolines, streamlines, wind symbols) were rewritten from scratch, and three routing layers (route line, waypoint flags, and weather-along-route symbols) were added as net-new native components.
    • A custom native rendering pipeline replacing the stock layer path, built on OpenGL ES 3.0 for the display stage with a Vulkan compute stage feeding the weather heatmap.
    • A zero-copy GPU handoff from the Vulkan compute pass to the OpenGL display pass through a shared hardware-buffer–backed texture, eliminating the CPU round-trip that previously ran on every frame.
    • GPU instancing for weather-along-route symbols, so the cost of drawing a dense forecasted isochrone scales with symbol types rather than with symbol count.
    • Particle-trail wind streamlines with 600 simultaneously animated particles, each trailing 50 history points, running off the main thread and pausing when the map is idle.
    • Correctness across the international dateline: routes, weather layers, and routing symbols now wrap correctly when panning across ±180° longitude, which matters for transpacific crossings.
    • Frame-accurate camera tracking during the 1-second auto-fit animation that fires when a sailor enables a route, closing a long-running visual bug where the heatmap and other overlays drifted away from the coastline during the tween.

How We Worked Together

Throughout the project, our expert joined three weekly catch-ups to report and stay aligned with the team.

Key results

  • A rendering pipeline that keeps up with Squid's visualization ambitions, with seven map layers now drawing through a custom native path engineered specifically for the app's workload.
  • One GPU draw call per symbol-type group for weather-along-route overlays, replacing the per-symbol draw-call model and unlocking the dense isochrone visualization the product team wanted to ship.
  • Zero CPU-side texture copies on the heatmap hot path, thanks to a shared hardware-buffer handoff between the Vulkan compute pass and the OpenGL display pass.
  • Pixel-perfect alignment of weather overlays throughout the auto-fit camera animation that fires when a route is activated, so the map no longer visibly drifts the moment a sailor taps a route on.
  • A foundation for future map visualization work: any new overlay can now plug into the same custom native pipeline, reusing the camera-sync, anti-meridian, and GPU-handoff machinery.

Special technical details

  • Mobile framework: React Native on Expo, running on the New Architecture with Turbo Modules and the Fabric renderer
  • State management: Redux Toolkit with Redux Persist
  • Map engine: MapLibre GL Native, extended with a custom native rendering pipeline
  • GPU: OpenGL ES 3.0 for the display path, Vulkan compute shaders for weather-data rasterization, GLSL and SPIR-V
  • GPU/CPU interop: shared hardware-buffer–backed textures for zero-copy handoff between the Vulkan compute stage and the OpenGL display stage
  • Native bridge: JNI between C++ and Kotlin, with a lock-free handoff between the main thread and the GPU render thread
  • Languages: C++17 for the rendering engine and JNI layer, Kotlin for platform integration and managers, TypeScript for the React Native surface, GLSL and compute shaders for the GPU work
  • Supporting native modules: an in-process C++ decoder for industry-standard weather-data formats, and an embedded C++ HTTP server delivering map tiles and forecasts locally on the device