
TL;DR
- Talo is faster than ever and now easily handles large amounts of game analytics updates.
- Game feedback props have been added, allowing you to add extra context to player feedback.
- Player purge settings have been added so retention for dev players and live players can be configured.
July 2025 overview
This month we've been focussed on performance - ensuring Talo can scale with large amounts of parallel updates. Thanks to better queries, caching and memory management, Talo will be able to respond to requests 2x-3x faster than last month.
Between performance updates we also added game feedback props. This will allow you to send additional context with player feedback such as what level the player was on, what character they've chosen or maybe even a severity level. In the dashboard, you can filter on game feedback props, so you can easily spot patterns and common issues highlighted by your players.
We also added settings for the player purge setting. Previously, you were able to remove players every 90 days for live players and 60 days for dev players. We've now extended this to be customisable so that you can purge dev players between 30-90 days and live players between 60-365 days.
Performance deep-dive
We made many improvements to the overall performance of Talo across several parts of the system such as game analytics, player groups and data exports. We've highlighted some of the main improvements below with the hope that other developers can find some quick wins for their own performance problems!
Analytics batching
Game analytics (game stats, events, socket logs and player sessions) are now batched. Instead of committing these one at a time or in small groups, we're flushing updates to the database on a regular interval. This happens outside the main request/response loop so that nothing gets blocked.
Indexing friendly names
Most Talo entities allow you to define a friendly name, e.g. the internal-name
for game stats and leaderboards. When using the Talo API (which powers the Godot plugin and Unity package), you'll pass in an internal-name and Talo will lookup the matching database entity.
Since internal-names are unique for each game, we added database indexes so that lookups no longer need to scan unnecessary rows.
The part of Talo that benefits most from this is player groups. When creating a player group you can specify prop keys, leaderboard internal-names or stat internal-names. These are used to construct a complicated query that decides whether players are eligible for groups. By adding indexes to these columns, we've significantly reduced the time it takes for Talo to calculate group eligibility.
Caching common queries
We've added a short cache to some common database queries such as access key lookups, player identification queries and game stat queries. Since these queries generally check static data, we now reuse previous query results - unless the becomes stale (e.g. if an access key was revoked).
Using native database statements
MikroORM, Talo's database ORM of choice, automatically handles transactions. This is incredibly useful for ensuring updates are safe and that they propagate to different parts of the system, however sometimes we just need to make quick database calls that don't affect the rest of the system.
The two biggest examples of this are the "last used at" column on access keys and player group members. For these, we want to fire-and-forget the native database insert/update/delete statements. These examples can happen extremely frequently so we don't want to include the complex overheads of transactions for fundamentally simple operations.
Data export streaming and sandboxed processing
Depending on what you choose to export, Talo's data exports can be massive. Your game could have tens of thousands of events or players. We need to be able to process these without running out of memory or affecting other parts of the system.
We're now leveraging database and file streaming to stream rows directly to the final CSV output files. We're also batching these requests so that large amounts of data are no longer being loaded into memory.
Finally, data exports run in their own isolated processes. This frees up the Node event loop to continue processing events while individual data export outputs happen in the background. For games with small amounts of data, this has made exports nearly instant.
Dashboard updates
- Game feedback props: you can now filter by game feedback prop key/value pairs, allowing you to spot common trends:
- Purge retention settings: the player purge tool is now configurable. You can choose a time period that best suits your game for both live and dev players. Head over to the the game settings page to configure this.
Platform updates
- Game feedback props: when sending player feedback, you can now add additional context with key/value pairs (props). For example, you can add props to track the player's level, the game mode they were in when they sent feedback, or any other relevant context that can help you understand the feedback better.
- Performance: we've made a lot of performance updates across the board, you can read all about it above!
- Stricter rate-limiting: we've reduced the rate limit for identification endpoints and email sends. These actions should be infrequent and you'll now see errors that likely stem from how you've implementation player identification and authentication.
- Session and presence cleanup: Players can sometimes appear to be online after ending their session for various reasons, so Talo now runs a daily job to accurately determine when they went offline. This ensures your game analytics remain accurate.
Godot plugin updates
- Save unloaded signal: the new
Talo.saves.save_unloaded
signal will allow you to handle any cleanup operations after a save has been unloaded. - Game feedback props: you can now send props with game feedback. You can filter on game feedback props in the Talo dashboard.
You can get the latest version of the Godot plugin on GitHub. Please make sure to give us a star ⭐️ if you've enjoyed using the plugin!
Unity package updates
- Game saves overhaul: we've rewritten most of the existing game save functionality and removed a few of layers of complexity. We've taken the lessons learned from revamping the Godot plugin's save system and applied them to our Unity package. Game saves now work much better across different scenes and we've updated the demo to show off this functionality.
- Save unloaded signal: the new
Talo.Saves.OnSaveUnloaded
event will allow you to handle any cleanup operations after a save has been unloaded. - Game feedback props: you can now send props with game feedback. You can filter on game feedback props in the Talo dashboard.
The latest version of the Unity package is available on GitHub. We'd love it if you could give us a star ⭐️ if you've found the package useful!
Coming up next
Talo's performance is better than ever, but there's still some low-hanging fruit we want to tackle.
August's big focus will be a new player subscription system. This new system, which aims to complete the multiplayer loop, will allow players to subscribe to and broadcast events. This is a high-level friends system that can be used to easily add multiplayer elements to your game. For example, a player could broadcast their new location and subscribed players can update their location on the screen.
This work will take us into September so that we can include plenty of controls like subscription management, broadcast history and more!
Join the community
Join us on Discord to stay up to date with upcoming features (including the new player subscriptions) and share your games with the community!
Build your game faster with Talo
Don't reinvent the wheel. Integrate leaderboards, stats, event tracking and more in minutes.
Using Talo, you can view and manage your players directly from the dashboard. It's free!
Get started
More from the Talo Blog

Changelog: channel storage, analytics updates and self-hosted improvements
Channel storage is here! A new way to store data that can be accessed by all players using channels. Plus improvements for self-hosted instances.

Changelog: advanced filtering for channels & leaderboards
New features for May 2025: Filter game channels and leaderboards by props, automatic player purging, and temporary channel memberships for Unity and Godot games.

Changelog: event breakdown, sessions, private channels
Our April updates: event property breakdown analytics, player session tracking and private game channels.

Talo is now available on the Unity Asset Store
Talo is now available on the Unity Asset Store. You can use Talo to track player stats, update your game without releasing a new update and more.