---
name: Tinybird Changelog
slug: tinybird-changelog
type: feed
source_url: https://www.tinybird.co/docs/changelog
organization: Tinybird
organization_slug: tinybird
total_releases: 109
latest_date: 2026-07-17
last_updated: 2026-07-20
tracking_since: 2022-04-13
canonical: https://releases.sh/tinybird/tinybird-changelog
organization_url: https://releases.sh/tinybird
---

<Summary type="rolling" window-days="90" release-count="11">
Tinybird pushed hard on developer tooling and infrastructure. The TypeScript SDK expanded from queries to full infrastructure-as-code—connectors, sinks, and a generator API shipped across multiple releases, letting developers define pipelines entirely in code. A major CLI 4.0 release landed during Launch Week alongside a Python SDK and redesigned UI, with branches graduating to GA and gaining connector support for agentic workflows. Infrastructure got deeper too: cluster management moved to API-first, ALTER operations integrated into deployments, and copy jobs picked up on-demand compute, while the query layer matured with streaming responses and query plan visibility.
</Summary>

<Summary type="monthly" period="March 2026" release-count="4">
March centered on infrastructure control and developer experience. CLI 4.0 shipped as the anchor of Launch Week, alongside a redesigned UI and Python SDK, while dedicated cluster management moved to API control. Later in the month, copy jobs gained on-demand compute, ALTER operations integrated into deployments, and the TypeScript SDK expanded with generator APIs and query optimizations.
</Summary>

<Release date="July 17, 2026" published="2026-07-17T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-07-17-july-week-three">
## Tinybird Classic sunset for Free and Developer plans

# Tinybird Classic sunset for Free and Developer plans

Tinybird Classic is being sunset for Free and Developer plan Workspaces. If you have a Classic Workspace on one of these plans, migrate it to Tinybird Forward by September 15, 2026. After that date, remaining eligible Classic Workspaces will be scheduled for automatic migration. Enterprise plan Workspaces are not affected.

Forward is the main Tinybird product experience. Schema changes, local development, branching, CI/CD, SDKs, and AI-assisted workflows are all better in Forward. The [migration guide](/docs/forward/guides/migrate-from-classic) walks through the process step by step, including the `tb migrate-to-forward` command.

Classic branches (part of the Versions functionality) are not migrated to Forward and will be removed during migration. Review how you use Classic branches before proceeding.

As a thank you for migrating early, we're offering a coupon for two months at 50% off your current plan, or one month free if you upgrade from Free to a paid plan. This offer is valid until August 15, 2026. Contact support@tinybird.co after completing your migration to claim it.

Classic Workspace creation in the UI is now restricted to organizations on an Enterprise plan.

## DynamoDB sampling for cloud branches and local

DynamoDB Data Source imports now support sampling in cloud branches and Tinybird Local. Main branches always get a full export on creation. Cloud branches and local can sample by row count or data size limits, or request a full export. This avoids slow exports on branches and reduces unnecessary egress costs.

## tb\_secret in Forward sink export settings

Forward Sinks now support `{{ tb_secret(...) }}` in `EXPORT_*` metadata fields like `EXPORT_BUCKET_URI`. Secrets are resolved at deploy time and baked into the Sink configuration. Empty secrets fail clearly instead of producing an invalid `s3://` path. Changing a Workspace secret used in an export does not update existing Sinks: redeploy to pick up the new value.

## v1 replace endpoint

New v1 endpoints are available for local file imports:

- `POST /v1/datasources/{name}/append?format={csv|ndjson|parquet}`
- `POST /v1/datasources/{name}/replace?format={csv|ndjson|parquet}`

These endpoints replace the equivalent v0 import request:

- `POST /v0/datasources?name={name}&mode={append|replace}&format={format}`

For replace operations, the v1 endpoint also accepts:

- `replace_condition={SQL condition}` — equivalent to `--sql-condition`
- `skip_incompatible_partition_key=true` — equivalent to `--skip-incompatible-partition-key`

The v0 import flow returns an import result that the client processes as a synchronous operation. The v1 endpoints stage the upload and enqueue an import job, returning immediately with the job response and `import_id`. Use `GET /v0/jobs/{import_id}` to follow the import until completion.

## Improvements and bug fixes

- \[All\]: Log detail rows now resolve to clickable resource links for Pipes, Endpoints, Sinks, and Data Sources. Data Source operation logs show a related Pipe row when metadata is available. The logs table adds a hover state and persistent highlight for the row open in the split panel.
- \[All\]: `ALIAS_REQUIRED` and `DECIMAL_OVERFLOW` errors are now classified as user errors and no longer retried by the platform. Queries hitting these conditions fail faster instead of accumulating retry attempts.
- \[Forward\]: TypeScript SDK 0.0.82 changes the default `branch_data_mode` to no data. Cloud branches are now created empty by default. Set `branch_data_mode: "last_partition"` in your config to keep copying the last partition of production data into new branches.
- \[All\]: Copy Pipes that reference a deleted or missing target Workspace now return HTTP 404 instead of a generic error.
- \[All\]: Pipe creation with valid JSON but wrong field shapes now returns HTTP 400 early, instead of failing later when the handler treats values as mappings.
- \[Forward\]: Changing `index_granularity` now forces a new table plus backfill instead of attempting an `ALTER`, since this setting changes how data is stored on disk.

## From the blog

**[The DynamoDB Connector is now in Tinybird Forward](https://blog.tinybird.co/2026-07-16-dynamodb-connector-tinybird-forward)**: How to mirror DynamoDB tables to Tinybird Forward with a `.connection` file and a single deploy, including the Classic-to-Forward migration path.
</Release>

<Release date="July 10, 2026" published="2026-07-10T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-07-10-july-week-two">
## Improved branch-based local development

# Git branch-aware Tinybird Local workspace selection¶

The CLI now picks the target Workspace in Tinybird Local more predictably during branch-based development. By default, commands point to the local Workspace mapped to the current Git branch. If you pass `--token` or set `TB_TOKEN`, the Token overrides Git branch detection and the command runs against the Workspace that belongs to that Token.

## Sink jobs now run on the least-busy replica¶

Sink jobs now pick the replica with the lowest load, using the same placement logic as Copy jobs and Data Source imports. Replica selection also accounts for running Sink queries, so Copy, import, and Sink placement all see the same picture of cluster load. This reduces the chance of a Sink job landing on a busy replica and slowing down.

## Improvements and bug fixes¶

- \[All\]: The `hostname` and `ProfileEvents` columns are now exposed when querying `system.query_log`, making it easier to see which replica ran a query and more insights of the query execution.
- \[All\]: Import jobs created with a capitalized format, such as `Parquet` instead of `parquet`, no longer get stuck in job tracking. Previously they held a worker slot for up to 5 minutes after finishing, which throttled subsequent imports.
- \[All\]: Truncating a Data Source with a long history of deduplicated inserts no longer fails. When the regular `TRUNCATE` cannot complete, Tinybird now swaps in an empty copy of the table instead of returning an error.
- \[All\]: Fixed [Omni](https://omni.co/) integration through the ClickHouse HTTP Interface.
- \[Forward\]: Tinybird CLI 4.6.7 fixes an intermittent `tb login` failure where the browser flow returned a JSON decode error, and now raises an actionable message when authentication cannot complete.
- \[Forward\]: The Endpoint integration snippets in the UI now build the correct URL when working against Tinybird Local.
- \[Forward\]: TypeScript SDK 0.0.81 uses server-side auto-promote for deployments instead of polling and manually setting the deployment live and deleting the previous one. `tb deploy` now accepts `--wait` / `--no-wait` and `--auto` / `--no-auto` flags (both default to true), matching the CLI.
</Release>

<Release date="July 3, 2026" published="2026-07-03T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-07-02-july-week-one">
## Lightweight deletes, Tinybird Local runs natively in arm64, and more

# Tinybird Local now supports arm64¶

Tinybird Local now ships a native `arm64` image alongside the existing `amd64` one. Starting with the Tinybird CLI v4.6.6, `tb local` runs the container using the host's native architecture (`linux/arm64` on Apple Silicon, `linux/amd64` elsewhere) instead of always forcing `linux/amd64`. Apple Silicon and other `arm64` machines no longer run under emulation, so the container starts faster and uses fewer resources.

No changes are needed in your setup. If you previously pulled the image with an older CLI and have the emulated `linux/amd64` version cached, `tb local` detects the mismatch and re-pulls the native image automatically.

To override the auto-detected platform, set the `TB_LOCAL_IMAGE_PLATFORM` environment variable (for example, `linux/amd64` to keep running the `amd64` image emulated on an `arm64` host).

### ClickHouse® upgraded to 25.8¶

The ClickHouse® version bundled in Tinybird Local is upgraded from 25.3 to 25.8, bringing the latest fixes and improvements to your local environment.

### Action needed if you use geoToH3¶

ClickHouse® 25.8 changes the default argument order of the [`geoToH3`](/docs/sql-reference/functions/geo-functions#geotoh3) function. If your queries call `geoToH3`, you must add the following setting to keep the previous (`lon`, `lat`) order:

Set geoToH3 argument order

```
SETTING geotoh3_argument_order = 'lon_lat'
```

Add the setting to the affected queries in your project, or set it at the container level, so results stay consistent after the upgrade.

## Lightweight deletes in beta¶

The new `POST /v1/datasources/{name}/delete` endpoint deletes rows using ClickHouse®'s lightweight DELETE: matched rows are marked as deleted and filtered out of queries, while the physical cleanup happens later during background merges. Requests are synchronous by default and return the number of affected rows inline, or you can pass `wait=false` to get a job you can poll instead. An optional `partition` parameter scopes the delete to a single partition.

From the CLI, add the `--lightweight-delete` flag to `tb datasource delete`. The same partition scoping is available there through the `--partition` flag.

The existing `/v0` delete endpoint is unchanged. See the [Replace and delete data](/docs/forward/guides/replace-and-delete-data#lightweight-delete) guide and the [Data Sources API reference](/docs/api-reference/datasource-api#delete-rows-from-a-data-source) for details.

## Monitor Organization from Overview and Logs UI pages¶

The Organization settings page now includes **Overview** and **Logs** pages to help you understand how your Organization is performing across Workspaces without switching context.

- **Overview** helps you start from the most relevant Workspaces, check recent usage, and spot errors from a single landing page.
- **Logs** brings logs from all Workspaces into one explorer, so you can filter by time range, status, source, Workspace, or text search and share the exact view with your team.

## Improvements and bug fixes¶

- \[Forward\]: `tb pull` generates Kafka, blob storage and DynamoDB connection files and automatically writes any necessary secrets.
- \[All\]: In the UI, Enterprise billing now shows a consistent credit forecast through the end of the contract and warns when recent usage trends project a credit shortfall.
- \[All\]: The Jobs API now returns jobs in a stable order, so polling views no longer show different jobs in the same row across refreshes.
- \[Forward\]: The Jobs page now keeps rows stable while refreshing, reducing flicker during automatic polling.
- \[Forward\]: SQL editor suggestions now keep working after typing a dot and correctly show column suggestions for dotted table names, such as `system.query_log`.
</Release>

<Release date="June 19, 2026" published="2026-06-19T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-06-19-june-week-three">
## DynamoDB connector support in Forward

# DynamoDB connector support in Forward

Forward now supports the [DynamoDB Connector](/docs/forward/ingest-data/connectors/dynamodb). You can use it to mirror an Amazon DynamoDB table into a Tinybird Data Source with an initial Point-in-Time Recovery export to S3, followed by Change Data Capture from DynamoDB Streams.

DynamoDB connectors in Forward need to be defined in a `.connection` file containing the IAM access policy required to access the underlying resources. To simplify setup, the Forward CLI includes a guided wizard that walks the user through the configuration process: `tb connection create dynamodb`. DynamoDB connections are also fully supported in our TypeScript & Python SDKs.

If you are already using DynamoDB connections and want to migrate from Classic to Forward, see the updated [Migrate from Classic with Connectors](/docs/forward/guides/migrate-from-classic-with-connectors) guide. The migration can be performed using the `tb —cloud pull` and `tb migrate-to-forward` commands.

## Kafka ingestion pause visibility

Kafka Data Sources now show an ingestion-paused state in the UI when the Connector Circuit Breaker is open. The Data Source page includes a paused ingestion banner, links to logs, an inspect-error action, and a `tb deploy` hint for manual retry.

When ingestion is paused by the Circuit Breaker, Tinybird now retries automatically every 12 hours. If a retry succeeds, ingestion resumes without manual intervention. You can still run `tb deploy` to retry sooner after fixing the underlying connection issue. See [Kafka logs](/docs/forward/ingest-data/connectors/kafka#kafka-logs) for details.

## Improvements and bug fixes

- \[Forward\]: It is now possible to only change the connection used by a Kafka Datasource. Previously, we incorrectly detected "no changes".
- \[Forward\]: Replacing all columns in a Data Source now forces the schema-change and backfill path instead of trying an invalid `ALTER` that drops every existing column.
- \[All\]: Playgrounds now debounce table descriptions, reuse known Data Source metadata, and cache successful `DESCRIBE` results to avoid repeated network calls while typing.
- \[All\]: Deleting the Workspace Admin token is no longer possible.
- \[All\]: Cloud now keeps the header and sidebar visible when Workspace access is blocked because an Organization has unpaid invoices. Organization admins see a billing link, and other Workspace members see how to contact their Organization admins.
- \[All\]: Dedicated Organization observability no longer shows CPU and memory charts on the Observability page. Those metrics now live on the Cluster page, and the Observability page links there.
- \[All\]: NDJSON URL imports can now be tuned per Workspace for `max_threads`, `max_insert_threads`, and `max_memory_usage`.
- \[All\]: HFI NDJSON ingestion now skips the sampling path when the sampling budget is exhausted, avoiding unnecessary JSON parsing on hot Data Sources.
</Release>

<Release date="June 12, 2026" published="2026-06-12T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-06-12-june-week-one">
## Snapshotted secret values in Pipes and SDK updates

# Secret values snapshotted in Pipes in Forward¶

Pipes that use secrets now snapshot the values when they're deployed, and continue to use the snapshotted values even if the secrets change. For new secret values to take effect, a deployment needs to be performed. Until now, a pipe that used a secret would evaluate its value on every invocation, allowing changes without a deployment and breaking the mental model of Forward.

Each workspace will move to the new behaviour whenever they do the next deployment.

## Secrets in Materialized Pipes¶

Materialized pipes now allow using `tb_secret`. This unlocks encryption use-cases and more. We'll blog about this soon, but you can get in touch with us if this sounds interesting and we'll help you build your use case and you'll help us iterate this feature.

## TypeScript SDK improvements¶

- Kafka connections now support IAM authentication fields in generated TypeScript and migration output.
- Data Sources now support the backfill skip option in the schema and generator.
- After successful deployment, previous deployment is deleted rather than sent to staging.

## Bug fixes and improvements¶

- \[All\]: NDJSON ingestion with `json:$` mappings now handles `Map` parsing correctly.
- \[All\]: Organization names can now be renamed from the UI. Go to your Organization's **Billing** page and open the **⋯** menu.
- \[Forward\]: The homepage now links back to Classic Workspaces.
- \[Forward\]: Fixed the **Open in Time Series** button on the Overview usage metrics page.
- \[Forward\]: Fixed the **Cancel query** button in Playgrounds.
</Release>

<Release date="May 22, 2026" published="2026-05-22T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-05-22-may-week-three">
## PREWHERE in Forward, quarantine auto-cleanup, and BI Connector EOL

# PREWHERE clauses are supported in Forward¶

PREWHERE clauses in Pipe SQL are now supported in Forward across all clusters, matching the behavior already available in Classic.

## Auto-cleanup for quarantine tables¶

Existing and newly created quarantine tables now have a 1-month TTL. Rows that land in quarantine will be cleaned up automatically after 30 days. This will allow customers to automatically clean up space that is not being used.

## TypeScript SDK 0.0.72 and 0.0.73¶

- Multi-argument `AggregateFunction` types are supported. `argMax(String, DateTime)`, `corr(Float64, Float64)`, `sumMap(Array(String), Array(UInt64))`, and parameterized variants like `quantiles(0.5, 0.9)` all round-trip correctly through the type mapper.
- Wider type coverage: `Int128`, `Int256`, `UInt128`, `UInt256` are now in the template transform allowlist.
- Pipe generation preserves non-param template helpers like `{{ column(...) }}` and `{{ split_to_array(...) }}` instead of trying to inject param metadata into them.

## Deprecation: BI Connector reaches end of life on June 30¶

The BI Connector will be removed on **June 30, 2026**. If you connect BI tools (Grafana, Power BI, Metabase, etc.) to Tinybird, migrate to the [ClickHouse® Interface](https://www.tinybird.co/docs/forward/work-with-data/publish-data/clickhouse-interface), which exposes the native ClickHouse protocol and works with any BI tool that speaks it. We're reaching out to affected Workspaces directly.

## Bug fixes and improvements¶

- \[All\]: URL import jobs now retry on transient infrastructure failures, with a deduplication token so retried inserts don't produce duplicate rows. User errors like schema mismatches still fail fast.
- \[All\]: JSON datetime conversion during ingestion is ~3.5x faster. Noticeable on events with many timestamp fields.
- \[All\]: Hidden Pipe params with a `_` prefix (including template loop variables like `_last`, `_col`) no longer leak into the UI Parameters panel.
- \[All\]: Transient Kafka consumer errors no longer surface as user-visible alerts within a short tolerance window.
- \[All\]: Weekly cost recap email subject now says "weekly" instead of "daily".
- \[Forward\]: CLI 4.5.7 fixes `tb build` logs to show the correct resource paths.
- \[Forward\]: Workspace region menu cleanup, regions are sorted alphabetically grouped by provider, the current Workspace is highlighted correctly, and other regions show even when they have no Workspaces.
- \[Forward\]: Fix ALTER operations timing out on some TTL modifications due to long mutations.

## From the blog¶

**[No more QPS limits on Developer Plans](https://www.tinybird.co/blog-posts/new-developer-plan-pricing)**: QPS limits and overages are gone from Developer Plans. Billing now tracks vCPU-seconds, every plan includes burst capacity (2x to 3x baseline), and ingestion is never throttled.

**[Hunting orphan objects: 45% off our ClickHouse storage bill (and a near data-loss incident)](https://www.tinybird.co/blog-posts/how-we-deal-with-cloud-orphan-objects)**: Engineering deep dive on tracking down petabytes of orphaned objects in object storage, cutting cloud storage costs ~45%, and the near data-loss incident that hardened the recovery procedures along the way.

Still on Tinybird Classic? [Migrate to Forward](https://www.tinybird.co/docs/forward/guides/migrate-from-classic).
</Release>

<Release date="May 14, 2026" published="2026-05-14T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-05-14-may-week-two">
## Upcoming Developer plan changes, CLI migration to Forward, and vector search deep dive

# Upcoming changes to Developer plans¶

The pricing model for plans on shared infrastructure is changing. The docs now include a detailed preview of what's coming:

- **QPS overages and Active minutes are being removed.** Two new SKUs replace them: vCPU overages and On-demand CPUs.
- **QPS is no longer tied to billing.** All plans share the same platform QPS limit (up to 600 QPS), kept as an infrastructure reliability safeguard only.
- **vCPU-based billing.** Each plan includes a baseline vCPU allocation. Usage above that allocation counts as vCPU overage. A burst capacity (typically 2x to 3x) absorbs spikes before rate limiting kicks in with a 429.
- **No more 24-hour resize restriction.** Developer plans can be resized or canceled at any time, with a minimum fee for same-day resizes.

Read the full details in the [Developer plan docs](https://www.tinybird.co/docs/forward/pricing/developer#upcoming-changes).

## Migrate from Classic to Forward with the new migrate-to-forward CLI command¶

From 4.5.6 upwards, Forward CLI supports the `migrate-to-forward` command which allows users to migrate Classic workspaces, without connectors, to Forward. This command makes migration self-serve and removes branches and releases, migrates your workspace, and produces a live deployment to fully complete a workspace's transition to Forward. The migration guide for these Classic workspaces without connectors can be found [here](/docs/forward/migrations/migrate-from-classic/without-connectors). In addition, we have updated the overall [migration docs](/docs/forward/migrations/migrate-from-classic) to pave the way for migrations with connectors that will be coming soon.

## Pipe stats retention extended to 30 days¶

The `tinybird.pipe_stats_rt` Service Data Source now retains data for 30 days, up from the previous 7-day window. You get a longer history for debugging, monitoring, and analyzing API usage patterns without needing to set up your own retention pipeline.

## TypeScript SDK: Null Engine Data Sources and optional output fields¶

The TypeScript SDK now supports Null Engine Data Sources. These are Data Sources that don't store data, useful for schema definitions, testing, or as intermediaries in pipelines where you need the schema but not the storage.

Endpoint output schemas also support optional fields with `.optional()`. This is useful for templated Endpoints where a column may or may not be present depending on request parameters:

```
output: {
  event_name: t.string(),
  event_count: t.uint64(),
  // Only returned when include_debug=1
  debug_info: t.string().optional(),
}
```

When `debug_info` is marked `.optional()`, schema validation accepts responses both with and without the column, and the inferred TypeScript type makes `debug_info` an optional property.

## Faster deployments¶

Forward deployments now avoid processing pipelines that haven't changed. Previously, modifying one pipeline could trigger unnecessary work on unrelated ones. Now only what you actually changed gets processed, so deploys are faster and use fewer database resources.

## More accurate memory charts in observability¶

The memory usage charts in Workspace and Organization observability now include data from both Data Source operations and Pipe stats, giving a more complete picture of memory consumption. Previously, only Data Source ops log was counted.

## Bug fixes and improvements¶

- \[All\]: S3 sink errors from IAM "is not authorized" denials are now correctly surfaced as user-facing errors with a clear message, instead of being reported as internal failures.
- \[Forward\]: Fixed drift detection in Shared Data Sources stemming from UNIX / Windows differences in line breaks.
- \[All\]: Fixed NDJSON ingestion via URL, including a regression where `Nullable(String)` columns could fail conversion to `LowCardinality(Nullable(String))` during Copy jobs.

## From the blog¶

**[From 48 seconds to 130 milliseconds: vector search in Tinybird](https://www.tinybird.co/blog-posts/vector-search-improvements)**: A customer needed semantic search over 20 million embeddings. Three changes (HNSW indexes, pre-filtering, query structure) turned a 48-second timeout into sub-200ms responses.

**[Project Kijiji: building a GNN-based routing intelligence platform](https://www.tinybird.co/blog-posts/project-kijiji-gnn-routing-intelligence)**: A guest post about how a Graph Neural Network platform uses Tinybird to map African internet routing inefficiencies and predict where new IXP peering agreements would have the highest regional impact.

Still on Tinybird Classic? [Migrate to Forward](https://www.tinybird.co/docs/forward/migrations/migrate-from-classic).
</Release>

<Release date="May 8, 2026" published="2026-05-08T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-05-08-may-week-one">
## Cluster selection for Workspaces, client IP tracking in pipe stats, and TypeScript SDK fixes

# Choose your cluster when creating a Workspace¶

Organizations with multiple dedicated clusters can now select which cluster to create a new Workspace on. A dropdown shows available clusters with replica CPU and memory details, so you know exactly what resources you're targeting.

This works in both Forward and Classic.

![Create a Workspace dialog showing cluster selection dropdown with available clusters and their replica CPU and memory details](/docs/_next/image?url=%2Fdocs%2Fassets%2Fchangelog%2Fcluster-selection-workspace.png&w=3840&q=75)

## Client IP and 403 visibility in pipe stats¶

Two observability improvements to `tinybird.pipe_stats_rt`:

**Client IP tracking.** Every API request now records the client IP address in `tinybird.pipe_stats_rt`.

**Better 403 visibility.** Requests rejected with a 403 (for example, from a revoked but cryptographically valid token) now appear in `pipe_stats_rt` with the associated workspace, token, and pipe info. Previously, only 403 from valid tokens with insufficient scopes were visible in `tinybird.pipe_stats_rt`.

## TypeScript SDK 0.0.69¶

Three fixes in the TypeScript SDK:

- Fixed column parameter metadata generation that could produce incorrect types.
- Fixed Pipe parameter metadata generation for complex parameter definitions.
- `aggregateFunction`'s type argument is now optional, matching ClickHouse® behavior.

## Improved reliability for Populate and Copy jobs with On-Demand Instance tiering¶

Populate and Copy Jobs run in on-demand instances will be more reliable when AWS or GCP regions lack availability of the instance sizes we provision for those operations. When the initial requested instance tier is unavailable, the platform will try to provision instances from other families with equivalent specs, and then fall back to lower-tier options.

This will make Populate and Copy jobs more reliable when run during periods of high demand.

Billing will reflect the instance type that was actually provisioned. If a lower-tier instance ends up being used, the cost is adjusted accordingly.

## Bug fixes and improvements¶

- \[Forward\]: Fixed a race condition that allowed two deployment jobs for the same deployment to run simultaneously.
- \[Forward\]: Fixed branch creation when the most recent deployment to the main workspace used `DEPLOYMENT_METHOD alter` on any pipes.
- \[Forward\]: Fixed `tb init` CI template generation for local development workflows.
- \[Classic\]: Classic CLI 6.4.1 fixes `%` operator rejection in `tb push` for `DEFAULT` and `MATERIALIZED` expressions.
- \[All\]: 405 errors on the `/v0/variables/` API now link to the correct documentation page.

Still on Tinybird Classic? [Migrate to Forward](https://www.tinybird.co/docs/forward/migrations/migrate-from-classic).
</Release>

<Release date="April 30, 2026" published="2026-04-30T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-04-30-april-weeks-four-and-five">
## New observability charts for Developer plans, CLI Docker image, and improved deployment reliability

# New observability charts for Developer plans¶

Developer plans now have their own observability charts: API CPU time, total CPU time, ingested rows, quarantine rows, memory, storage, requests, errors, and data transfer.

Tooltips are synchronized across all charts and share the same time range. When viewing ranges under one hour, granularity drops to 5-second windows for more precise CPU tracking.

# tb CLI Docker image¶

The Tinybird Forward CLI is now available as a Docker image at [`tinybirdco/tb-cli-docker`](https://hub.docker.com/r/tinybirdco/tb-cli-docker). Use it when your CI runner requires everything to run inside a container.

A `docker-compose.yml` file is included to boot the CLI alongside Tinybird Local for testing.

See the [CI/CD docs](/docs/forward/development-workflow/cicd) for details.

# Forward CLI updates¶

**CLI 4.5.2**: `tb build` on branches now runs as an asynchronous job, avoiding timeouts on long-running executions.

## Deployment improvements¶

**Materialized Views with shared targets**: Deployments that involve multiple Materialized Views writing to the same target Data Source now correctly preserve all MV records during promotion. Previously, a cross-deployment dedup step could drop fan-out siblings in mixed-deployment scenarios.

**Table existence checks on all replicas**: Before running `EXCHANGE TABLES` during deployments, Tinybird now verifies the table exists on all replicas. This prevents deployment failures caused by replication lag.

## Performance improvements¶

- **max\_threads default removed in Gatherer**: The `max_threads` ClickHouse® setting no longer caps thread usage, letting queries use all available cores in the Gatherer.
- **vCPU metering uses 30-second windows**: vCPU usage measurement now uses 30-second windows instead of 1-minute windows, providing more accurate burst tracking.

## Bug fixes and improvements¶

- \[Forward\]: Fixed NDJSON URL downloads resuming correctly on timeout using HTTP Range headers, preventing large file imports from failing on transient S3 slowdowns.
- \[Forward\]: Fixed data sink exports running with `use_hive_partitioning=0` to avoid unintended path interpretation.
- \[Forward\]: Fixed `AS` clause handling in forwarded job log sinks.
- \[All\]: Fixed cluster usage not appearing in prorated expenses during plan resizes.
- \[All\]: Fixed new Developer plan creation when users upgrade from a previous plan.
- \[All\]: Updated tinybird-local ClickHouse® to v25.3.14.5-lts to fix `DESCRIBE` queries.
- \[All\]: Organization members can now manage their own Workspace access and role from the organization members page.

Still on Tinybird Classic? [Migrate to Forward](https://www.tinybird.co/docs/forward/migrations/migrate-from-classic).
</Release>

<Release date="April 17, 2026" published="2026-04-17T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-04-17-april-weeks-two-and-three">
## Two new APAC regions, faster deployments with ATTACH PARTITION, and destructive operation safeguards

# Two new regions in Asia-Pacific¶

Tinybird is now available in **AWS ap-east-1 (Hong Kong)** and **AWS ap-southeast-2 (Sydney)**.

If you're running workloads that serve users in APAC, these regions put your data and compute closer to them. Lower query latency at the edge, faster ingestion from local sources, and data residency in Hong Kong or Australia.

Full feature parity in both regions: Kafka and S3 connectors, Events API, real-time Materialized Views, and low-latency API Endpoints.

Select either region when you [sign up for Tinybird](https://cloud.tinybird.co/signup) or create a new Workspace.

# Deployments improvements¶

## Faster deployments with ATTACH PARTITION¶

Deployment backfills now use `ATTACH PARTITION ALL FROM` instead of `SELECT * ... populate` when possible. This skips the full data scan and copy, attaching existing partitions directly. For large Data Sources, this can make deployments significantly faster.

## Destructive column changes require --allow-destructive-operations¶

Deployments that overwrite existing columns with default values (for example, changing a column type in a way that loses data) now require the `--allow-destructive-operations` flag. Without it, the deployment fails with a clear error message explaining which columns would be affected. This prevents accidental data loss during schema evolution.

## Deployments unblocked when copy jobs are running¶

Previously, if a Copy Pipe job was running, all deployments were blocked, even when the deployment didn't touch any Data Sources involved in the copy. Now, deployments that don't modify Data Sources used by an active copy job proceed without waiting.

# DevEx improvements¶

## optimize\_aggregation\_in\_order from all interfaces¶

The previous changelog introduced `optimize_aggregation_in_order` support for inline `SETTINGS` in SQL queries. You can now use it everywhere:

- As a query parameter: `/v0/pipes/<pipe>.json?optimize_aggregation_in_order=1`
- In Pipe SQL templates: `%{{activate('optimize_aggregation_in_order')}}`
- In the Playground
- Via the ClickHouse® HTTP interface

This setting can speed up aggregation queries where the Sorting Key matches the `GROUP BY` columns.

## Forward CLI updates¶

**`tb copy pause` and `tb copy resume`**: commands to pause and resume copy jobs from the CLI.

**CLI 4.4.2**: `tb build` and `tb dev` now display git branch, Tinybird branch name, and dashboard URL before building. In local mode, a separate Workspace is created per git branch.

## Python SDK init no longer requires --type¶

The `tinybird init` command in the Python SDK no longer requires the `--type` parameter. The project type is now inferred automatically.

## TypeScript SDK updates¶

Several improvements landed in the [TypeScript SDK](https://github.com/tinybirdco/tinybird-sdk-typescript) (v0.0.65-0.0.66):

- **Custom fetch exposed on typed client.** You can now pass a custom `fetch` implementation to the typed Tinybird client for use cases like custom auth headers or request logging.
- **Local workspace URL format updated.** Local workspace dashboard URLs now use the format `cloud.tinybird.co/{provider}/{region}/{ws}~local~{branch}` instead of `cloud.tinybird.co/local/{port}`.

## UI improvements¶

- **Unified resource actions.** Data Source, Endpoint, and Copy Pipe resource pages now have consistent action buttons: "Open in Playground" and "Open in Time Series" on Data, Output, and Log tabs. A row limit selector and "Show as table/JSON/CSV" controls are also standardized.
- **DataFlow performance.** The lineage graph now computes dependencies centrally instead of per-node, making large graphs render faster. Tab switching in resource pages no longer re-renders the lineage.
- **Overview charts.** Tooltips are synced across overview charts, and each chart now includes "Open in Playground" and "Open in Time Series" buttons.
- **Connector logs.** Connector log views now include "Open in Playground" and "Open in Time Series" buttons.

## Pipe query validation on tb check¶

Running `tb check` now validates Pipe queries against ClickHouse®, catching SQL errors before deployment. Postgres and Iceberg query Pipes are excluded from this validation since they use different query engines.

## API: 413 for oversized query results¶

The query API now returns HTTP 413 when a query result exceeds the maximum allowed size, instead of a generic error. This makes it easier to detect and handle large result sets programmatically.

## SQL length limit updated to 128KB¶

The maximum SQL query length has been increased from 64KB to 128KB across all plans. See the [limits docs](https://www.tinybird.co/docs/forward/pricing/limits) for details.

## Bug fixes and improvements¶

- \[Forward\]: Fixed Pipe resource Query and Output tabs not using parameters properly.
- \[Forward\]: Fixed playground reuse to match by SQL and nodes, not just by name.
- \[Forward\]: Fixed deployment view URL persistence. The selected view in deployments is now stored in the URL, so it's preserved when refreshing.
- \[Forward\]: Fixed CSV import of Tuple columns through ClickHouse®.
- \[Forward\]: Fixed CSV quarantine for `Nullable(DateTime)` columns. Empty strings in nullable datetime columns were incorrectly quarantined instead of being treated as NULL.
- \[Forward\]: Improved CSV header and separator detection during ClickHouse® import, preventing conflicts with ClickHouse®'s auto-detection.
- \[Forward\]: Fixed NDJSON replace operations that were marked as done before the replace hook finished.
- \[Forward\]: Fixed `replace_tables` failures in copy jobs when Materialized View SQL references external tables not in the Workspace.
- \[Forward\]: Fixed deployment token scopes when a Data Source is replaced with a Pipe of the same name.
- \[Forward\]: Fixed cyclic dependency detection during deployment phase calculation.
- \[Forward\]: CLI messages now show `uv run tinybird` for Python SDK projects and `npx tinybird` for TypeScript SDK projects instead of `tb`.
- \[Forward\]: Blocked creating and promoting releases in Forward Workspaces (deletion still allowed for cleanup).
- \[All\]: Fixed duplicated regions in the region selector menu.
- \[All\]: Fixed Workspace redirect after deletion and when the last stored Workspace no longer exists.
- \[All\]: Fixed total storage not being displayed in the credits usage table.
- \[All\]: Fixed CPU time chart in the overview page.
- \[All\]: Fixed multipart form-data requests without a boundary parameter returning 500 instead of 400.
- \[All\]: Documented `mode=replace` requirement for pre-signed S3 URLs and `FORWARD_QUERY` backfill warnings.

# Deprecations¶

## hfi\_requests: ch\_written\_rows, ch\_written\_bytes, and ch\_cpu\_time deprecated¶

The `ch_written_rows`, `ch_written_bytes`, and `ch_cpu_time` columns in the `tinybird.hfi_requests` [Service Data Source](https://www.tinybird.co/docs/forward/monitoring/service-datasources) are now deprecated and will be removed in a future release.

If you're using these columns in queries or dashboards, remove them. All other `hfi_requests` columns remain available and unchanged.

# From the blog¶

**[Finding and fixing bugs in ClickHouse®'s Alias table engine](https://www.tinybird.co/blog-posts/fixing-clickhouse-alias-dependency-bug)**: We tested ClickHouse®'s experimental Alias table engine against real workloads, found two bugs in DDL dependency tracking and Materialized View triggering, and shipped a fix upstream.

**[Tinybird is now available in AWS ap-east-1 (Hong Kong)](https://www.tinybird.co/blog-posts/tinybird-is-now-available-in-aws-ap-east-1)**: Lower latency for APAC workloads with data residency in Hong Kong.

**[Tinybird is now available in AWS ap-southeast-2 (Sydney)](https://www.tinybird.co/blog-posts/tinybird-is-now-available-in-aws-ap-southeast-2)**: Lower latency for Australia and Oceania workloads with data residency in Sydney.

Still on Tinybird Classic? [Migrate to Forward](https://www.tinybird.co/docs/forward/migrations/migrate-from-classic).
</Release>

<Release date="March 27, 2026" published="2026-03-27T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-03-27-march-week-four">
## On-demand compute for copy jobs, optimize_aggregation_in_order, and TypeScript SDK improvements

Run copy jobs on on-demand compute with a single CLI flag, use `optimize_aggregation_in_order` in API queries, and a batch of TypeScript SDK and UI improvements.
</Release>

<Release date="March 20, 2026" published="2026-03-20T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-03-20-march-week-three">
## Cluster management API, ALTER operations in deployments, and UI polish

Manage dedicated cluster replicas via API, apply schema changes with ALTER during deployments, and a batch of UI and CLI improvements.
</Release>

<Release version="4.0" date="March 14, 2026" published="2026-03-14T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-03-11-launch-week-march">
## Launch Week: CLI 4.0, Python SDK, redesigned UI, unified logs, and data previews

Everything we shipped during Launch Week March 2026. Five days, five releases.
</Release>

<Release date="March 6, 2026" published="2026-03-06T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-03-06-march-week-one">
## CSV import fixes and TypeScript SDK generator

Fixed NULL handling in CSV imports, new generator API in the TypeScript SDK, and several bug fixes.
</Release>

<Release date="February 27, 2026" published="2026-02-27T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-02-27-february-week-four">
## Branches are GA

Branches are generally available with connector support, preview deployments, and agentic workflows. Plus CLI 3.5.3, and TypeScript SDK improvements.
</Release>

<Release date="February 20, 2026" published="2026-02-20T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-02-20-february-week-three">
## TypeScript SDK: connectors and sinks

Define S3, GCS, and Kafka connections and sink pipes in TypeScript. Plus a simpler deploy workflow and Playground improvements.
</Release>

<Release date="February 13, 2026" published="2026-02-13T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-02-13-february-week-two">
## Connectors support in branches, ClickHouse settings, SDK...

See the physical operations ClickHouse performs when executing your query, plus Kafka start/stop in branches and a big TypeScript SDK update
</Release>

<Release date="February 6, 2026" published="2026-02-06T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-02-06-february-week-one">
## Streaming API responses

Large query responses now stream in chunks, reducing time to first byte
</Release>

<Release date="January 30, 2026" published="2026-01-30T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-01-30-january-week-five">
## Time Series & Playgrounds in Forward

The browser experience from Classic is back, rebuilt and improved for Forward
</Release>

<Release date="January 23, 2026" published="2026-01-23T00:00:00.000Z" url="https://www.tinybird.co/docs/changelog/2026-01-23-january-week-four">
## Tinybird Agent Skills

Open-source skills for AI coding agents, plus breaking changes for CLI and connectors
</Release>

<Pagination cursor="2026-01-23T00:00:00.000Z|2026-04-11T14:01:35.748Z|rel_94SfAR8pr6bZdsWxHHEdJ" next="https://releases.sh/tinybird/tinybird-changelog.md?cursor=2026-01-23T00%3A00%3A00.000Z%7C2026-04-11T14%3A01%3A35.748Z%7Crel_94SfAR8pr6bZdsWxHHEdJ&limit=20" />
