Skip to main content

CHANGELOG.md

# Changelog

## v4.0.0 - 2026-07-12

First release of this fork ([BeamLabEU/beamlab_ex_aws_sqs](https://github.com/BeamLabEU/beamlab_ex_aws_sqs)),
based on [ex-aws/ex_aws_sqs](https://github.com/ex-aws/ex_aws_sqs) v3.4.0. Published to Hex as
`beamlab_ex_aws_sqs` (the original `ex_aws_sqs` name is already taken).

- ***BREAKING CHANGE***: All operations now use the AWS SQS **JSON protocol**
  (`AmazonSQS.<Action>` / `application/x-amz-json-1.0`) instead of the legacy Query/XML protocol.
  [Fixes ex-aws/ex_aws_sqs#34](https://github.com/ex-aws/ex_aws_sqs/issues/34). Successful
  responses are now the raw JSON body AWS returns (e.g. `%{"MessageId" => ...}`) instead of a
  hand-parsed, snake_cased map — see the README's migration guide.
- ***BREAKING CHANGE***: Removed `ExAws.SQS.SaxyParser` and `ExAws.SQS.SweetXmlParser`, and the
  `:saxy`/`:sweet_xml` optional dependencies along with them — there's no more XML to parse.
- Documented `send_message_batch/2` with a runnable example.
  [Fixes ex-aws/ex_aws_sqs#35](https://github.com/ex-aws/ex_aws_sqs/issues/35)
- Relaxed the `:hackney` dependency constraint (it's only used by this library's own test suite)
  so it no longer conflicts with apps on hackney 4.x.
  [Fixes ex-aws/ex_aws_sqs#36](https://github.com/ex-aws/ex_aws_sqs/issues/36)
- Added `start_message_move_task/2`, `cancel_message_move_task/1`, and
  `list_message_move_tasks/2` (DLQ redrive tasks, added to the AWS API after upstream's last
  release).
- Added pagination options (`:max_results`, `:next_token`) to `list_queues/1` and
  `list_dead_letter_source_queues/2`.
- `receive_message/2`'s `:attribute_names` option now sends the modern `MessageSystemAttributeNames`
  field instead of the deprecated `AttributeNames` field.
- Fixed binary message attribute handling for the JSON protocol: `BinaryValue` is now correctly
  base64-encoded so that the configured JSON codec's `encode!/1` (and the wire request) succeeds.
  Callers still pass the raw binary as `:value`.
- `send_message_batch/2` (and related batch helpers) now consistently accept both keyword lists
  and maps for entries (previously only keyword lists worked for entries containing message
  attributes).
- Bumped minimum Elixir version to `~> 1.18`, `ex_aws` to `~> 2.7`. Dropped the direct dependency
  on Jason in favor of Elixir's built-in `JSON` module (available since 1.18) — set
  `config :ex_aws, json_codec: JSON`.

---

Changelog entries below this point are from the original `ex-aws/ex_aws_sqs` project.

## v3.4.0

- fix `sqs_message_attribute` typing
- fix: update to Config module import
- refactor: catch sweetxml parsing error / handle non-xml error body
- Add dialyzer, credo, CI workflow alignment
- Bump minimum Elixir version to 1.10

## v3.3.1 - 2021-03-29

- [Fix Issue #24](https://github.com/ex-aws/ex_aws_sqs/issues/24) Always parse MessageGroupId as a string

## v3.3.0 - 2021-03-28

- Updated min elixir version to 1.7
- Updated ex_aws dependency from "~> 2.0" -> "~> 2.1"
- documentation and formating updates

## v3.2.1 - 2020-04-14

- Updated mix deps for `:saxy` & `:sweet_xml` to be marked optional

## v3.2.0 - 2020-04-13

- Added optional support for [saxy](https://hex.pm/packages/saxy) XML parser
- Saxy parser set as default parser if both `:saxy` and `:sweet_xml` loaded.

## v3.1.0 - 2020-01-22

- Added support for Queue Tags

## v3.0.2 - 2019-11-21

- Improved docs

## v3.0.1 - 2019-11-21

- Updated `sqs_message_attribute_name` typespec for `SQS.receive_message` to match AWS support attributes.

## v3.0.0 - 2019-08-17

- ***BREAKING CHANGE***: Changed queue specific functions to take the QueueUrl instead of the QueueName. Previously the name was used to build the path for the request. This is an anti-pattern according to aws docs and prevents this library from being used with alternative SQS compatible services, like localstack.

## v2.0.1 - 2019-04-11

- Relaxed `:ex_aws` version constraint from `v2.0.0` to `v2.0`

## v2.0.0 - 2017-11-10

- Major Project Split. Please see the main ExAws repository for previous changelogs.