What’s New in 0.9
Freeze the candidate API for 1.0 and fix stream, recovery, and action error defects found while qualifying it.
After reading this guide, you will know:
- Which APIs the 1.0 compatibility commitment covers.
- Which stream and browser recovery defects 0.9 fixes.
- Which settings are deprecated and what the action endpoint now returns for server errors.
Know the supported boundary
Version 0.9 adds no features. It names the classes, settings, events, and wire formats that 1.x keeps compatible, and the policy for changing the pinned runtime. Read Supported API before you depend on a class or method that a guide does not show.
Stop oversized generation
writer = bridge.writer
provider.stream do |chunk|
writer.push(chunk).each { |envelope| transport.broadcast(envelope) }
break if writer.terminated?
end
A response that passes stream_byte_limit still ends with stream_too_large.
Now Bridge#envelopes, Broadcaster.broadcast, and the RubyLLM adapter stop
reading the provider at that point instead of consuming the rest of the
response. For a callback-based provider, check Writer#terminated? yourself.
An exception from your on_error hook no longer suppresses the error frame.
Recover restored surfaces
A surface paused for a snapshot emits openui:snapshot-required again when it
reconnects, including after a Turbo cache restoration. A surface that stores no
library_version checks stream frames against the configured library
fingerprint. The Server Actions
guide shows how to allowlist the default library’s @OpenUrl step.
Review endpoint errors and deprecations
Server-side gem errors, such as an unserializable result, return HTTP 500 with
code error and the message action failed. config.library_name and
config.surface_id_param report a deprecation and are removed in 1.0.
Next Steps
- Upgrading - update from 0.5.
- Supported API - review the compatibility boundary.