Changelog
v1.8.1 - October 7, 2025
- Build with Go 1.25.2.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-10-07).
v1.8.0 - October 1, 2025
- Add the ability to query stored messages by channel and event name, sorted by timestamp. This data is written to a keys-only global secondary index (GSI).
- Add
ConnectionID
,SourceIP
,UserAgent
, andTrigger
attributes to stored messages (and equivalentconnectionId
,sourceIp
,userAgent
, andtrigger
to pub-sub event metadata).Trigger
is set to one of "client.websocket", "client.http", "server.http", or "server.lambda", depending on what triggered the message. - The built-in CloudWatch Dashboard for all installations has been completely overhauled and now includes version info and links to useful resources. It's also grouped into sections to make it easier to find relevant metrics.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-10-01).
v1.7.0 - September 23, 2025
- Add the ability to specify
autoSubscribe
in channel claims, which will automatically subscribe specified channels upon a successful connection. - Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-09-22).
v1.6.0 - September 19, 2025
- Allow clients to publish messages to channels where they are not subscribed. Set the
broadcast
claim totrue
for messages that are permitted. Supported for both WebSocket and Client HTTP messages. - Stop writing empty
ScheduleExpression
orScheduleExpressionTimezone
attributes to stored messages in DynamoDB. - Build with Go 1.25.1.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-09-19).
v1.5.2 - August 21, 2025
- Build with Go 1.25.0.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-08-21).
v1.5.1 - August 9, 2025
- Build with Go 1.24.6.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-08-08).
v1.5.0 - July 23, 2025
- Add support for scheduling messages for future delivery. Specify
scheduleExpression
and, optionally,scheduleExpressionTimezone
when publishing messages with Lambda, HTTP URL, or client WebSocket or HTTP. For client requests, the event-levelscheduleBefore
permission claim is required. This feature is backed by Amazon EventBridge Scheduler and allows scheduling one-time message events (recurring schedules are not currently supported in Hotsock). - Server-initiated message publishing requests now return more helpful error info in the HTTP or Lambda response body.
- In addition to publishing messages via the WebSocket, the web console provides interface options for sending standard and raw messages using the client HTTP API.
- The web console now displays a timestamp alongside messages so you can see when each message was sent or received.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-07-22).
v1.4.0 - July 15, 2025
- Add the ability to disable connection count tracking for channel subscriptions with
omitFromSubCount
. This is an optional cost reduction measure for cases where the count of subscribers in a channel changes frequently and tracking that count is unneeded. - Fix an issue where some item remove events were not triggering event bus events.
- Dualstack mode is enabled for the WebSocket API, providing both IPv4 and IPv6 support for client WebSocket connections.
- Build with Go 1.24.5.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-07-15).
v1.3.2 - April 2, 2025
- Work around known bug in API Gateway where
GoneException
is occasionally returned when a connection is still alive. - Build with Go 1.24.2.
- Update all aws-sdk-go-v2 SDK modules to their latest versions (as of 2025-04-02).
v1.3.1 - February 12, 2025
- Fix an issue where the
connectedAt
timestamp on a storedConnectionItem
did not match API Gateway's connection timestamp - it was off by a few milliseconds. These values are now synchronized. - Build with Go 1.24.0.
- Update all aws-sdk-go-v2 SDK modules to their latest versions.
v1.3.0 - October 14, 2024
- Add long-term message storage. Set the
store
parameter for server-initiated message publishes or set thestore
claim for client-initiated messages to an integer number in seconds to specify how long messages should be retained. - Include
connectionSecret
inhotsock.connected
message, which when combined with the connection ID is an API key that can make HTTP requests to the HTTP API to list and publish messages for a channel. - Add
historyStart
claim to specify the timestamp of how far back a connection can query for past messages using the HTTP API. - Reduce the HTTP API timeout from 10 seconds to 5 seconds.
- Add CORS support to the HTTP API.
- Improve performance of the
hotsock.connected
message. Where this message was previously received 300-600ms after the connection was established, it is now received within 30-60ms. - Switch the DynamoDB Streams
FilterCriteria
patterns to use the object type (T
) attribute value to determine if it should be consumed by the stream processor instead of using arbitrary key prefixes/suffixes. - Improve log redaction of API keys and connection secrets.
- Add stream processor metrics that are published from logs using CloudWatch Embedded Metric Format (EMF).
v1.2.0 - September 23, 2024
- Switch from AWS Managed KMS Key to AWS Owned Key for DynamoDB table encryption to avoid cost issues with concurrent UpdateItem calls trigging tons of
kms:Decrypt
operations. A future release can offer KMS/CMK as an explicit opt-in where such costs are acceptable. - Change the main table batch size for DynamoDB Stream processing from 100 to 1000 and add a filter pattern so only specific keys are processed.
- Always use SNS
PublishBatch()
instead of singlePublish()
calls to maximize throughput.
v1.1.0 - August 29, 2024
- Add a "Pre-warm environment" (
PreWarmEnvironmentParameter
) CloudFormation option to keep all time-sensitive, user-facing Lambda functions warm using a one-per-minute scheduled invocation. Designed for staging or demo environments where traffic often drops to zero, but where you don't want noticeable cold starts when usage resumes. - Set
MemorySize: 1769
for the main table stream processor to give it a full vCPU.
v1.0.0 - August 27, 2024
Initial public release! 🎉
Read the launch blog post to learn more.