Recent Announcements
Fri, May 29
New in 2.4: Xano Agent UX Improvements—One-Step Visual Diff Review
Fri, May 29
New in 2.4: Error Logs Dashboard with Version Tracking, Triggers, and Urgency Scoring
Fri, May 29
New in 2.4: Request History Dashboard for Full-Stack Observability
Mon, Apr 20
New in 2.3: Performance Insights in Function Stack
Mon, Apr 20
New in 2.3: Error Logs for Better Observability
Latest Posts
Where to install extensions? I can't find marketplace
I think I'm going crazy cause I really can't find xano marketplace. I'm planning to install auth extensions for google, facebook etc. The video tutorials and links are outdated? https://www.xano.com/connect/facebook-oauth/ https://www.xano.com/connect This is all I could find but there's no way to install? Please help. Thank you. 12Thu, Jun 11Working from IDE
I'm trying to pull my workspace to my IDE, but it can't pull custom functions. I've used the vscode extension, and the xano cli but it's not letting me pull the functions nor export it. 01Mon, Jun 8How to sort a field in a nested addon
Hi, I am trying to sort a field in a nested addon - as below I want to sort this by event_sequence. I have watched the video here. This is my function - Xanoscript - query getOrderDetails_0 verb=GET { api_group = "shipogogo" input { int order_id? } stack { db.query sgogoOrders { where = $db.sgogoOrders.id == $input.order_id return = {type: "list"} addon = [ { name : "orders_to_shipments" input: {sgogoorders_id: $output.id} addon: [ { name : "shipments_to_events" input: {sgogoshipments_id: $output.id} as : "_shipments_to_events" } { name : "shipments_to_couriers" input: {sgogoCouriers_id: $output.sgogocouriers_id} as : "_shipments_to_couriers" } ] as : "_orders_to_shipments" } ] } as $sgogoOrders1 var $sort_sequence { value = $sgogoOrders1 |set:$sgogoOrders1._orders_to_shipments._shipments_to_events:"$$|sort:event_sequence" } } response = $sgogoOrders1 } and here is the error I also tried a sort - query getOrderDetails_0 verb=GET { api_group = "shipogogo" input { int order_id? } stack { db.query sgogoOrders { where = $db.sgogoOrders.id == $input.order_id return = {type: "list"} addon = [ { name : "orders_to_shipments" input: {sgogoorders_id: $output.id} addon: [ { name : "shipments_to_events" input: {sgogoshipments_id: $output.id} as : "_shipments_to_events" } { name : "shipments_to_couriers" input: {sgogoCouriers_id: $output.sgogocouriers_id} as : "_shipments_to_couriers" } ] as : "_orders_to_shipments" } ] } as $sgogoOrders1 !var $sort_sequence { value = $sgogoOrders1 |set:$sgogoOrders1._orders_to_shipments._shipments_to_events:"$$|sort:event_sequence" } var $sort_sequence { value = $sgogoOrders1 |sort:$sgogoOrders1._orders_to_shipments._shipments_to_events.event_sequence:"itext":true } } response = $sgogoOrders1 } but got this error - I would appreciate any assistance. Thanks Steve 02Mon, Jun 8
Recent Activity
I think I'm going crazy cause I really can't find xano marketplace. I'm planning to install auth extensions for google, facebook etc. The video tutorials and links are outdated? https://www.xano.com/connect/facebook-oauth/ https://www.xano.com/connect This is all I could find but there's no way to install? Please help. Thank you. 12Thu, Jun 11Help! I'm a NoobAnsweredI'm trying to pull my workspace to my IDE, but it can't pull custom functions. I've used the vscode extension, and the xano cli but it's not letting me pull the functions nor export it. 01Mon, Jun 8Connect Xano to ..Hi, I am trying to sort a field in a nested addon - as below I want to sort this by event_sequence. I have watched the video here. This is my function - Xanoscript - query getOrderDetails_0 verb=GET { api_group = "shipogogo" input { int order_id? } stack { db.query sgogoOrders { where = $db.sgogoOrders.id == $input.order_id return = {type: "list"} addon = [ { name : "orders_to_shipments" input: {sgogoorders_id: $output.id} addon: [ { name : "shipments_to_events" input: {sgogoshipments_id: $output.id} as : "_shipments_to_events" } { name : "shipments_to_couriers" input: {sgogoCouriers_id: $output.sgogocouriers_id} as : "_shipments_to_couriers" } ] as : "_orders_to_shipments" } ] } as $sgogoOrders1 var $sort_sequence { value = $sgogoOrders1 |set:$sgogoOrders1._orders_to_shipments._shipments_to_events:"$$|sort:event_sequence" } } response = $sgogoOrders1 } and here is the error I also tried a sort - query getOrderDetails_0 verb=GET { api_group = "shipogogo" input { int order_id? } stack { db.query sgogoOrders { where = $db.sgogoOrders.id == $input.order_id return = {type: "list"} addon = [ { name : "orders_to_shipments" input: {sgogoorders_id: $output.id} addon: [ { name : "shipments_to_events" input: {sgogoshipments_id: $output.id} as : "_shipments_to_events" } { name : "shipments_to_couriers" input: {sgogoCouriers_id: $output.sgogocouriers_id} as : "_shipments_to_couriers" } ] as : "_orders_to_shipments" } ] } as $sgogoOrders1 !var $sort_sequence { value = $sgogoOrders1 |set:$sgogoOrders1._orders_to_shipments._shipments_to_events:"$$|sort:event_sequence" } var $sort_sequence { value = $sgogoOrders1 |sort:$sgogoOrders1._orders_to_shipments._shipments_to_events.event_sequence:"itext":true } } response = $sgogoOrders1 } but got this error - I would appreciate any assistance. Thanks Steve 02Mon, Jun 8Working with APIs
Latest Feature Requests
- 0
'Export Data' feature to pick the workspace live branch
This screen in the settings allows the export of the workspace including data and business logic in the 'workspace.json' file. This export always exports from the workspace v1 branch, but in several cases the live branch of a workspace has been moved off from the v1 and as a result by exporting from here, we get to a 'business logic drift' state. I completely understand that to export the latest business logic with option to control the exported branch we can use the metadata API route: 'workspace/export-schema' and the 'workspace/export' endpoints, which allow specifying the branch. But it would be nice to not have to use the metadata API for something that's also there in the UI. - 0
Option to disable or suppress the Set-Cookie: XNS header on API responses
Problem Statement Xano automatically appends a Set-Cookie: XNS=...; Path=/socket/; Secure; HttpOnly; SameSite=Strict header to every API response — including read-only, public endpoints with no authentication or Realtime features enabled. This header cannot be removed using Xano's built-in HTTP Header function step, as it is injected at the infrastructure level after the function stack runs. This causes a critical caching problem: most CDNs (e.g., Cloudflare, Fastly, AWS CloudFront) will not cache any response that contains a Set-Cookie header, since cookies are typically user-specific. As a result, even endpoints with response caching enabled in Xano cannot benefit from CDN-level caching. This defeats the purpose of using a CDN and puts unnecessary load on the Xano instance for every request. Proposed Solution Please provide one or more of the following options: A workspace-level toggle to disable the XNS cookie on workspaces that do not use the Realtime feature. 2. A way to suppress or strip the Set-Cookie header on specific API endpoints via the HTTP Header function step. 3. At minimum, official documentation clarifying whether this behavior is intentional or a bug, so users can plan their infrastructure accordingly. - 0
Request History: Include Seconds in Timestamps and Show Timestamp in Request Detail View
Currently, each request in the list shows the method, status, path, and a timestamp — but the timestamp is only displayed up to the minute. In practice, this makes it quite difficult to distinguish between multiple requests that happen within the same minute, especially when debugging high-frequency endpoints or rate limiting scenarios. Proposed Improvements 1) Include seconds in the timestamp (at minimum) Ideally, timestamps should include seconds (and even milliseconds, if possible), for example: 27/03/2026 17:25:32 instead of just 17:25. This would make it much easier to trace request sequences and understand timing-related issues. 2) Show the timestamp inside the request detail view Timestamp is only visible in the request list. Once you open a specific request, that information is no longer shown. It would be very helpful to also display the exact timestamp inside the request detail view, so that when inspecting a single request, you still have full context about when it occurred. FA - 0
Native Scheduling to Post Process for Precise Background Execution
I’d like to propose a feature that, in my opinion, would significantly improve Xano’s capabilities around background processing and bring it more in line with modern, event-driven architectures. Right now, Xano gives us two useful mechanisms: Post Process, which allows functions to run immediately after an endpoint response (great for async/non-blocking flows) Background Tasks, which allow recurring jobs However, there is a clear gap: there is no native way to schedule a function to run at a specific point in time (i.e., no scheduler). This has been mentioned in community posts going back 2–4 years, and while there are workarounds, they are far from ideal. The typical approach involves creating a database “queue” table, running a recurring background task to poll that table, executing pending jobs. This approach feels quite outdated (it honestly reminds me of old PHP + cronjob patterns) and comes with several drawbacks: Inefficient at scale (constant polling + DB reads) Bulk/spiky execution patterns instead of smooth distribution over time Lack of timing precision (execution depends on task intervals, not exact timestamps) Additional complexity and maintenance (tables, polling logic, cleanup, retries, etc.) Unnecessary resource usage, especially on the database layer Proposed Solution Instead of introducing a completely new system, my suggestion is to extend the existing “Post Process” feature. Specifically, allow an optional field such as a “timestamp” (or scheduled_at) to be defined in Post Process. If no timestamp is provided → behavior remains the same (execute immediately after response) If a timestamp is provided → execution is deferred and triggered exactly at that time Under the hood, this would rely on an internal Xano-managed queue, removing the need for developers to build and maintain their own scheduling systems. Benefits Precise scheduling (execution at a specific timestamp, not “best effort” intervals) Better scalability (no polling, no bulk spikes) Lower resource usage (no DB queue required) Cleaner architecture (no custom schedulers, simpler backend logic) More modern paradigm (event-driven, async-first design) This would effectively turn Post Process into a more powerful async orchestration tool, covering both immediate background execution and delayed/scheduled execution without introducing additional complexity for developers. I believe this would solve a long-standing gap in Xano and remove the need for fragile workarounds that don’t scale well. Curious to hear what others think — and hopefully the Xano team might consider this direction. FA - 0
"Set Cache Value": Support Redis SET NX and boolean return
Hi Xano Team, I’d like to suggest an improvement to the "Set Cache Value" function to better support high-performance and concurrency-safe architectures. Currently, this function appears to map to the Redis command SET key value EX ttl, which is perfectly fine for general caching use cases. However, in more advanced and professional systems, Redis is not only used for caching but also for distributed locking and preventing race conditions. Redis natively supports this pattern using SET key value NX EX ttl, where the NX flag ensures the key is only set if it does not already exist. This is a widely recommended approach for implementing locks and coordinating concurrent processes. Xano already provides solid support for concurrency control at the database level, for example with PostgreSQL transactions using lock = true. However, there is currently no equivalent mechanism when using Redis through "Set Cache Value". A simple but powerful improvement would be to add an optional parameter (e.g., set_if_not_exists) to this function. When enabled, Xano would execute SET key value NX EX ttl instead of the current command. Additionally, the function could return a boolean value indicating whether the key was actually set. This would enable proper use of Redis for distributed locking, help prevent race conditions in high-concurrency environments, reduce reliance on database-level locks, and align Xano with standard Redis best practices. It would also unlock more advanced backend patterns such as idempotency control and job coordination. Supporting this pattern would significantly expand what developers can safely and efficiently build on Xano. Thanks for considering this improvement. I believe it would add real value for teams building scalable and robust systems on the platform. FA