Changelog

Your source for the latest features, improvements, and fixes across LocalStack products, all in one place.

  1. Docker Image Tag Updates

    LocalStack for Snowflake now follows the Docker image tag policy used by the wider LocalStack release process.

    • latest now mirrors stable and is pushed only from tagged releases such as 2026.05.0.
    • dev tracks untagged changes from the main branch, and nightly tracks the scheduled nightly build.
    • If you pinned localstack/snowflake:latest to follow development builds, switch to dev or nightly.

    SQL Function and Expression Compatibility

    Several fixes reduce cases where valid Snowflake SQL failed locally due to type coercion or PostgreSQL behavior leaking through the emulation layer.

    • TRY_CAST(<array> AS ARRAY) returns the array value instead of rejecting ARRAY as a target type.
    • MIN and MAX preserve typed NUMBER(p,s) values so decimal aggregates no longer round-trip through floating-point.
    • ARRAY_AGG(DISTINCT ...) works with variant path expressions like f.value:"key"::STRING.
    • COUNT(DISTINCT CASE WHEN ... THEN ... END) preserves literals inside nested CASE predicates.
    • LAG and LEAD preserve qualified column references in ORDER BY, so joins with duplicated column names no longer raise false ambiguity errors.
    • ILIKE and LIKE work more reliably on values coming from LATERAL FLATTEN.

    Improved Parity with Snowflake

    • QUALIFY queries combining SELECT * with aliased expressions inside a CTE no longer create duplicate projected columns.
    • UNION and UNION ALL coerce aliased NULL values through CTEs without requiring explicit casts.
    • SQL UDF and procedure bodies starting with a CTE, set operation, or BEGIN ... END block are no longer prefixed with an invalid SELECT during translation.
    • Invalid GROUP BY projections and other compilation failures return Snowflake-style errors instead of raw PostgreSQL error shapes.

    Snowpipe Processing Improvements

    • Snowpipe notification processing schedules COPY INTO work per pipe instead of running it on the SQS polling thread, so different pipes load files concurrently.
    • A single-worker executor per pipe preserves ordering within a pipe, and the runner tracks in-flight work so the same file is not scheduled again while it is still loading.

    Multi-Statement SQL and Error Handling

    • Statement splitting no longer skips valid statements that contain line, block, or inline comments; comments are stripped before statements reach the query pipeline.
    • Invalid SQL error responses avoid leaking raw PostgreSQL internals, improving compatibility with the Snowflake Python connector, the .NET driver, and test suites that assert Snowflake-style failures.
    • Compilation failures involving quoted identifiers and aliases return cleaner Snowflake-style responses.
    Read Full Release Notes
  2. AWS Batch Multi-Node Parallel Jobs

    The Batch provider now runs Multi-Node Parallel (MNP) jobs that span multiple coordinated nodes, with one main node that workers connect to over the private network.

    • Supports the full MNP job lifecycle, MainNode/numNodes overrides, per-node environment variables, per-node log streams, and termination propagation across child nodes.
    • ECS tasks in awsvpc network mode now report the container private IPv4 address in networkInterfaces[].privateIpv4Address on DescribeTasks; bridge and host mode tasks return an empty interface list.

    Self-Managed EC2 Nodes on EKS (`AmazonLinux2023`)

    Self-managed EC2 nodes can join an emulated EKS cluster on the AL2023 AMI family, with Karpenter autoscaling as an early use case.

    • EC2 instances launched with an application/node.eks.aws NodeConfig in their user data join the matching EKS cluster, with support for the clusterDNS, maxPods, evictionHard, registerWithTaints, and nodeLabels fields.
    • EKS-optimised AMIs for all supported Kubernetes versions resolve via DescribeImages and the standard SSM Parameter Store paths.
    • CreateFleet instances launched from a launch template now carry the template security groups, resolve $Latest/$Default version aliases, and apply fleet system tags; RunInstances assigns the default VPC security group when none is specified.

    Expanded AWS Replicator Coverage

    • Organizations replication now covers organizational units and member accounts, with identifiers generated deterministically so resources keep the same IDs across runs.
    • S3 supports single-bucket replication by ARN or identifier, plus batch replication of all buckets in the source account with their per-bucket configurations.
    • DynamoDB AWS::DynamoDB::Table replication covers tables with Global Secondary Indexes and KMS-managed encryption.
    • RDS AWS::RDS::DBCluster is now replicable.

    Debian sid Base Image

    The base Docker image moved to Debian sid to pick up upstream fixes for OS-level vulnerabilities that Debian trixie classifies as wontfix.

    • The Python runtime version is unchanged.
    • The move crosses a glibc boundary, so PostgreSQL in RDS may report a collation version mismatch on data persisted via Cloud Pods; run ALTER DATABASE <dbname> REFRESH COLLATION VERSION; and ALTER COLLATION pg_catalog.default REFRESH VERSION; after upgrading, and REINDEX any text-based indexes on persisted data.
    • PostgreSQL 12 has reached upstream end-of-life and is no longer in the image.

    IAM Enforcement Parity

    Several cases where LocalStack was stricter than AWS and rejected valid requests with AccessDenied under ENFORCE_IAM=1 have been fixed.

    • S3 CopyObject checks s3:GetObject against the source object in CopySource, no longer requires s3:ListBucket or s3:PutObjectAcl, and requires s3:PutObjectTagging only with TaggingDirective=REPLACE.
    • RDS cluster and instance creation now treats parameter group, option group, subnet group, and target group resources as optional, and requires rds:AddTagsToResource only when a Tags parameter is passed.

    Service Parity Improvements

    • CloudFormation adds full CRUD for AWS::Kinesis::ResourcePolicy and Cloud Control Read/List for API Gateway V2 and RDS resource types; AWS::S3::Bucket supports Cloud Control Read covering ACLs, encryption, lifecycle, replication, versioning, and CORS.
    • ECS defers target group registration until a task reaches RUNNING and deregisters targets when a task transitions to STOPPED or FAILED.
    • Athena fully supports CREATE TABLE, INSERT, and SELECT (including CTAS) against s3tablescatalog/<bucket> federated catalogs.
    • Ruby 4.0 Lambda runtime (ruby4.0) is now available, and Batch job definitions honor containerProperties.secrets from Secrets Manager and SSM Parameter Store.
    • Organizations, Route 53, DynamoDB, Resource Groups, DocumentDB, Bedrock, CloudFront, and RDS PostgreSQL received targeted parity and bug fixes.
    Read Full Release Notes
  3. Glue Iceberg REST Catalog Integration

    The Snowflake emulator now supports catalog integrations that use the AWS Glue Iceberg REST endpoint, so you can test Snowflake Iceberg tables backed by Glue and S3 Tables locally.

    • CREATE CATALOG INTEGRATION accepts Glue REST options including CATALOG_API_TYPE = AWS_GLUE, WAREHOUSE, and REST_AUTHENTICATION with TYPE = AWS_SIGV4.
    • The emulator configures the PyIceberg REST catalog with SigV4 signing and the configured warehouse identifier when connecting to Glue.
    • CREATE ICEBERG TABLE can reference an existing table in the remote catalog via CATALOG_TABLE_NAME.

    Web App UI Improvements

    • The SQL worksheet runs multi-statement SQL from the editor and shows progress while statements execute.
    • Query results and Query History display side-by-side, and selecting a history row fetches its previous results.
    • Results appear in tabs with failed queries flagged and errors shown inline; a banner notes when only the first 100 rows are displayed.
    • The resource browser lists views as a distinct type with dedicated icons for databases, schemas, tables, views, columns, and resource groups.
    • The SQL editor adds autocomplete for Snowflake keywords, built-in functions, and schema objects, and formats DATE, TIME, and TIMESTAMP values more clearly.

    New SQL Date/Time Functions

    • Added DAY, DAYOFMONTH, DAYOFYEAR, QUARTER, WEEK, and YEAROFWEEK for extracting parts from a date or timestamp.
    • TIMESTAMP_LTZ_FROM_PARTS supports the six-argument form (year, month, day, hour, minute, second), with nanoseconds defaulting to 0.
    • DATE_PART and EXTRACT now handle unquoted date/time parts such as DATE_PART(year, date_col) and EXTRACT(year FROM date_col).

    Snowflake Parity Improvements

    • INFORMATION_SCHEMA.PROCEDURES is supported via the metadata FDW mechanism and returns user-created procedures with columns like ARGUMENT_SIGNATURE, DATA_TYPE, PROCEDURE_LANGUAGE, and PROCEDURE_DEFINITION.
    • Routine tracking distinguishes procedures from functions, handles overloaded routines, and tracks procedures created through IDENTIFIER($var).
    • INFORMATION_SCHEMA.TABLES gains ROW_COUNT and BYTES, returning NULL for views to match Snowflake.
    • SHOW OBJECTS returns row and byte counts, adds the is_interactive column, and supports scoped filters such as SHOW OBJECTS IN <database>.<schema> STARTS WITH '<prefix>' LIMIT <n>.
    • Snowpipe notification processing precomputes pipe routes per SQS batch and filters object notifications by bucket and pipe path before building COPY INTO queries.
    Read Full Release Notes
  4. App Inspector

    LocalStack for AWS 2026.04.0 launches App Inspector, an observability layer that monitors your locally emulated AWS environment to surface misconfigurations, runtime errors, and missing permissions.

    • Trace service-to-service calls to see where a request stopped and why.
    • Inspect the data payloads exchanged between services at every hop, such as a Lambda payload to SNS or an SQS message body.
    • Catch IAM misconfigurations like missing or overly restrictive permissions while still local.
    • Available as a core feature with no extra setup. The Event Studio extension is deprecated in favor of App Inspector.

    Athena and S3 Tables Federation via Glue Catalogs

    Athena, Glue, and S3 Tables are wired together so S3 Tables data can be queried from Athena via Glue federated catalogs, matching the AWS s3tablescatalog pattern.

    • Glue adds federated catalog CRUD APIs (CreateCatalog, GetCatalog, GetCatalogs, DeleteCatalog) and an Iceberg REST endpoint at /iceberg/v1/catalogs/....
    • Glue GetDatabase, GetTable, CreateDatabase, and CreateTable act on S3 Tables when the catalog ID matches s3tablescatalog.
    • Athena queries S3 Tables by referencing catalogs of the form s3tablescatalog/<bucket>.
    • The Trino engine powering Athena's bigdata container is upgraded from 440 to 480 (Java 25).

    CloudFormation Registry Custom Resource Type Execution

    Custom resource types uploaded via RegisterType are now executed end-to-end instead of only supporting CRUD and mock operations.

    • When a stack references a registered type, LocalStack resolves it against the registry first, falling back to built-in providers, then invokes the extension's Lambda with the original CloudFormation handler payload.
    • Python and Java-based extensions are supported. Only the RESOURCE extension type is executable in this release.

    RDS PostgreSQL SSL and AWS Organizations Coverage

    • The RDS provider accepts SSL/TLS connections to emulated PostgreSQL instances, including sslmode=require. Note pg_stat_ssl reports ssl=false even though the connection is encrypted.
    • The AWS Replicator can replicate organizations from a real AWS account, with deterministic IDs for organizations and policies, policy and attachment replication, and full hierarchy coverage.
    • Added the AWS::Organizations::OrganizationalUnit CloudFormation resource provider with full CRUDL support, including via Cloud Control.

    S3 Checksum Algorithms and Service Parity

    • S3 supports the five new checksum algorithms (MD5, XXHash3, XXHash64, XXHash128, SHA-512) for uploads, downloads, and multipart uploads, with end-to-end validation against client-supplied values.
    • CloudFormation propagates stack-level tags to taggable resources and adds Update support for AWS::ECS::Service and AWS::KMS::Key.
    • Athena adds UpdateDataCatalog, GetTableMetadata, and ListTableMetadata, and bumps the default workgroup engine from v2 to v3.
    • Lambda redirects Java 17+ AWS SDK V1 functions via Transparent Endpoint Injection and keeps $LOCALSTACK_HOST in no_proxy for Lambda runtimes.

    Deprecations and Removals

    • Removed the legacy v1 EventBridge provider; remove any PROVIDER_OVERRIDE_EVENTS reference from your configuration.
    • The legacy CloudFormation engine (engine-legacy) and the CloudWatch v1 provider now log a boot-time deprecation warning and are planned for removal in 2026.05.
    • EKS now supports Kubernetes 1.30 through 1.35; support for 1.29 has been removed.
    Read Full Release Notes
  5. Snowflake Scripting & SQL Coverage

    • Major leap in Snowflake Scripting support inside stored procedures, including expanded control-flow and variable handling.
    • GET_DDL is now supported across the most commonly used object types, making schema introspection and migration tooling much easier to build locally.
    • FULL OUTER JOIN is now supported, closing a long-standing parity gap with Snowflake.
    • Over 50 additional SQL functions implemented this release, with focused parity work on aggregate, window, and VARIANT operations.

    Developer Experience

    Enhanced Web App UX

    We've polished the in-product web app with a refreshed UX to make local Snowflake development feel as smooth as production.

    • Reworked query editor and results pane for faster iteration.
    • New navigation patterns to move between databases, schemas, and warehouses more naturally.
    • Cleaner inspection of objects via the side panel and metadata views.

    Calendar Versioning

    LocalStack for Snowflake adopts the new YYYY.MM.patch calendar versioning scheme alongside LocalStack for AWS. Your existing pinned versions continue to work, but new releases will follow the calendar cadence.

    Read Full Release Notes
  6. Major Announcements & Core Changes

    Major Announcements & Core Changes in LocalStack for AWS 2026.03.0
    • Calendar Versioning: Transitioned from semantic versioning to a calendar-based format (YYYY.MM.patch).
    • Consolidated Docker Image: The localstack/localstack and localstack/localstack-pro DockerHub images are now identical. The services available to you are now dynamically determined by your auth token entitlements.
    • Mandatory Auth Tokens: A personal or CI auth token is now required to start LocalStack for AWS. A temporary bypass via LOCALSTACK_ACKNOWLEDGE_ACCOUNT_REQUIREMENT=1 is available until April 6, 2026.
    • Unlimited CI Credits: CI credit limits have been removed across all pricing tiers, including the non-commercial free tier (subject to our fair use policy).

    New LocalStack CLI

    Introducing lstk

    We're shipping the first release of lstk, a brand-new LocalStack CLI rebuilt to simplify auth, install, and day-to-day workflows.

    • Single binary installable via npm or Homebrew, no Python required.
    • Browser-based authentication that stores your auth token automatically.
    • Built-in Terminal UI to walk through auth, AWS profile setup, and more.
    • Improved log viewing, off by default, with finer control over output.

    Service Updates & Improvements

    • EKS and CloudWatch are now fully integrated with the Resource Groups Tagging API (RGTA).
    • EC2 CreateFleet and DeleteFleets now spin up real containers/pods instead of returning mocked responses, with support for On-Demand, Spot, and mixed fleets.
    • StepFunctions TestState now supports Parallel state with mocked results and correctly interpolates variables across JSONata-based states.
    • MSK now supports Kafka v4.0.x and v4.1.x, and can run Kafka inside a Docker container instead of pulling artifacts from apache.org.
    • IAM and STS have been migrated from Moto to LocalStack core for tighter integration and better parity.
    Read Full Release Notes
  7. New Provider: Resource Groups Tagging API

    LocalStack 4.14 introduces a brand-new provider for the AWS Resource Groups Tagging API (RGTA), giving you a unified way to discover and manage tagged resources locally.

    • Query across multiple AWS services from a single endpoint via GetResources.
    • Drop-in compatibility for inventory, cost, and tag-governance tooling.
    • First step toward end-to-end tag-based workflows in LocalStack.

    Service Parity Improvements

    • MSK now supports KRaft mode, removing the ZooKeeper dependency for new clusters.
    • Glue can now be used as the default Hive metastore, unlocking richer EMR/Athena/Glue workflows.
    • EKS integrates with the Instance Metadata Service (IMDS), enabling more realistic pod-identity flows locally.
    • Step Functions, CloudFormation, S3, Route 53, and ECS all received targeted parity fixes and stability improvements.
    Read Full Release Notes
  8. Expanded Snowflake Scripting Features

    Snowflake Scripting gets closer to full parity, letting you exercise procedural logic locally with confidence.

    • Anonymous blocks for ad-hoc procedural SQL without creating persistent objects.
    • IF-ELSEIF-ELSE conditional clauses with nested expressions and multi-statement branches.
    • Exception handling with EXCEPTION WHEN OTHER THEN and access to SQLERRM/SQLSTATE.

    Enhanced information_schema Coverage

    • information_schema.columns for column metadata introspection.
    • information_schema.schemata for schema-level discovery.
    • information_schema.databases for account-wide database metadata.

    New SQL Functions & Parity Improvements

    • Several aggregate and bitwise functions commonly used in analytics workloads.
    • Targeted improvements for dynamic tables, session variables, window functions with DISTINCT, and LIKE/ILIKE operators.
    Read Full Release Notes
  9. Lambda: .NET 10 Runtime Support

    LocalStack for AWS 4.13 adds support for the .NET 10 Lambda runtime, keeping local development in lock-step with the latest AWS-managed runtimes.

    • Run and debug .NET 10 functions locally with the same toolchain you ship to production.
    • Compatible with existing build, deploy, and packaging workflows.

    ECS, Route 53 & API Gateway Polish

    • Better ECS task and service emulation, with improvements to lifecycle and networking edge cases.
    • Tighter routing parity for Route 53 across alias records and weighted/latency policies.
    • API Gateway routing fixes that bring custom domains and stage variables closer to AWS behavior.
    • Plus a long tail of smaller fixes across S3, IAM, and Step Functions.
    Read Full Release Notes
  10. Iceberg Integration Improvements

    Snowflake 1.6 expands Iceberg support so external catalog workflows feel native to LocalStack.

    • Reference existing tables in an external REST catalog (for example, AWS S3 Tables) via CATALOG_TABLE_NAME.
    • Schema inference from external catalog tables when columns are omitted.
    • Access delegation mode for Polaris-style catalogs, including vended credentials.

    New SQL Functions

    • Additional string, math, and validation helpers commonly used in data transformation workloads.

    Improved Parity with Snowflake

    • Cross-database SELECT statements behave more like Snowflake.
    • Stage GET/PUT flows and numeric casting for large values are more faithful.
    • Connector-compatible DML stats metadata aligns with what production clients expect.
    Read Full Release Notes