Skip to content
Order Genesis or Genesis XL v1.8 today
Order Genesis v1.8 today
June 3, 2026 Software Update

June 3, 2026 Software Update

This week we deployed a big performance update to the FarmBot web app as well as a new version of FarmBot OS with some bug fixes. Read on for the details!

3-7x FPS and 2-3x load time improvement in 3D

Over the last month we utilized AI coding agents to benchmark, implement, and test nearly 900 optimization ideas to the 3D farm designer code, ultimately accepting close to 200 changes. This has resulted in a 3x to 7x improvement in FPS (frames per second) performance depending on the account, as well as a 2x to 3x improvement in loading time.

The changes fell into the following broad categories:

  • Memoization to prevent unrelated config or bot state changes from causing unaffected parts of the scene to be re-rendered. This is especially noticeable when a bot is rapidly sending status and position updates, or when changing settings.
  • Instancing to allow similar 3D objects to be drawn in fewer GPU calls. This helps most in accounts with many plants, points, or weeds.
  • Baking (combining) groups of 3D objects into one object (for example, the Soil Sensor components) to reduce GPU calls.
  • Lazy loading to avoid unnecessary network requests and computation for elements not in the active scene, helping to improve load times.
  • Hot path optimizations, allowing for some work to be skipped and loops to run more quickly, adding up to a more snappy and responsive feeling throughout regular interactions.

Below are some plots from our CI environment from before and after the optimizations, showing the scenarios we’re testing against: /promo, Genesis v1.8 demo accounts, new “Stress 1000” demo accounts, and simulating a “Water All” sequence. Take note of the timing of the orange “Loaded” markers, as well as the green “Avg FPS” numbers!

Before

After

The app should now run at 60 FPS on most laptops, tablets, and phones, and up to 120 FPS on devices with a high refresh display. It truly is a joy to spin the virtual FarmBot around and zoom in and out without skipping a beat.

Progressive loading

As part of the push to optimize loading performance, the 3D scene is now progressively revealed as soon as components have loaded. That means you’ll now see the base environment load almost instantly, while the 3D FarmBot model, plants, points, weeds, and more pop in as soon as they’re ready.

Improved animations

The new progressive load-in animations have also been extended to toggling on and off various map layers. Now, objects will smoothly and quickly animate in and out of view instead of instantly appearing and disappearing.

Changing the time (or the season in the promo page) now smoothly animates the color and position of the sun and shadows.

Miscellaneous

  • Added internal stress demo accounts with 250, 500, 750, and 1000 resources of multiple types to help identify performance bottlenecks and test against more demanding scenarios.
  • Improved click handling to prevent undesired selections when orbiting the camera.
  • Added additional point deletion guards for regimens and events.
  • Improved panel closed URL state so the app can be refreshed with no panel open.
  • Improve seasonal animations in promo to have much faster night cycles.
  • Increased the speed of demo sequence simulations to 30FPS.
  • Further improved our CI workflows and benchmarking capabilities.
  • Fixed an issue handling partial status updates.
  • Updated dependencies.

FarmBot OS v15.5.2

The newest version of FarmBot OS fixes and extends some generic Lua helper functions which may affect custom Lua code in some edge cases:

  • Support for nested lists in map_to_table/1 and stringify %DateTime{} values inside lists.
  • Support curly brace table paths in the read_status() Lua helper.
  • Preserve array order in lua_to_elixir/1.

These changes fix an issue where read_status() with no arguments could crash the Lua VM with {:badkey, N}. Thank you kieranklaassen for opening the issue on GitHub!

If you have written custom Lua sequences, please check them after updating to ensure everything still works as expected.

Next article FarmBot Partners with iINNOVATE Regional Skills Lab