diff --git a/doc/qbk/main.qbk b/doc/qbk/main.qbk
index 63e6aa99..27cc3ef5 100644
--- a/doc/qbk/main.qbk
+++ b/doc/qbk/main.qbk
@@ -134,7 +134,9 @@
[import ../../test/doc/core_3_layers.cpp]
[section:quickref Reference]
-🞲 indicates item is new in this version.
+'''
+🞲 indicates an item that is new in this version.
+'''
[xinclude quickref.xml]
[endsect]
[block'''This Page Intentionally Left Blank 1/2''']
diff --git a/doc/qbk/quickref.xml b/doc/qbk/quickref.xml
index 553f795c..98dca9f3 100644
--- a/doc/qbk/quickref.xml
+++ b/doc/qbk/quickref.xml
@@ -8,7 +8,6 @@
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Official repository: https://github.com/boostorg/beast
-
-->
diff --git a/doc/qbk/release_notes.qbk b/doc/qbk/release_notes.qbk
index 444162f8..ffa71d58 100644
--- a/doc/qbk/release_notes.qbk
+++ b/doc/qbk/release_notes.qbk
@@ -9,9 +9,158 @@
[section Release Notes]
+[/-----------------------------------------------------------------------------]
+
+[heading Boost 1.70]
+[/ includes up to version 209]
+[/
+Exposition:
+Enlarged scope
+New quality of life features:
+ timed stream
+ async_op_base, stable_async_op_base
+New Networking refresher
+New websocket-chat-multi example
+* `net` is a namespace alias for `boost::asio`
+]
+
+[tip
+ The namespace alias `net` is now used throughout for `boost::asio`.
+]
+
+[*New Features]
+
+[/* `BASIC_TIMEOUT_STREAM` TODO]
+
+* ([issue 1305]) Better `flat_buffer`, `flat_static_buffer`, `multi_buffer`, and `static_buffer`:
+ * Revise all reference documentation
+ * Move construction does not always invalidate buffers
+ * non-const `data()` returns a mutable buffer sequence
+ * Add `cdata()` to also return constant readable bytes
+ * Eligible member functions are declared `noexcept`
+
+* ([issue 1345]) Better `flat_buffer`, `multi_buffer`
+ * Add `reserve()`, `max_size()`, `shrink_to_fit()`
+ * Respect Allocator `max_size()`
+ * Specify exception safety
+
+* ([issue 1384]) New functions `bind_back_handler`, `bind_front_handler`
+
+* Better `static_buffer`, `flat_static_buffer`
+ * Add `clear()`
+ * More members are `noexcept`
+ * Specify exception safety
+
+* Faster `http::string_to_field`
+
+* New file
+ * New variadic `is_const_buffer_sequence`
+ * New variadic `is_mutable_buffer_sequence`
+ * New `buffers_iterator_type` trait
+ * New `buffers_type` trait
+
+* New classes `async_op_base` and `stable_async_op_base`
+ * Handle boilerplate for writing composed operations
+ * New `allocate_stable` is preferred over `handler_ptr`
+
+* New `buffer_size` replacement for `net::buffer_size`
+
+* New:
+ * `saved_handler`
+ * `buffers_range_ref`
+ * `dynamic_buffer_ref`
+ * `get_lowest_layer` and `lowest_layer_type`
+ * `close_socket` and `beast_close_socket`
+ * `error` and `condition`
+
+[*API Changes]
+
+* HTTP stream algorithms return the number of bytes transferred
+ from the stream. Previously, they returned the number of bytes
+ consumed by the parser.
+ ['Actions Required]:
+ * Callers depending on the return value of `http::read` or
+ `http::async_read` overloads should adjust the usage of
+ the returned value as needed.
+
+* `flat_static_buffer::reset()` is deprecated.
+ ['Actions Required]:
+ * call `clear()` instead.
+
+* `buffers_adapter` is now called `buffers_adaptor`.
+ ['Actions Required]:
+ * Replace `buffers_adapter` with `buffers_adaptor`, or define
+ `BOOST_BEAST_ALLOW_DEPRECATED`.
+
+* `buffers` is now called `make_printable`.
+ ['Actions Required]:
+ * Replace `buffers` with `make_printable`, and include
+ "make_printable.hpp" instead of "ostream.hpp".
+
+* `file_mode::append_new` is removed, as it makes no sense.
+ ['Actions Required]:
+ - Replace `file_mode::append_new` with either `file_mode::append`
+ or `file_mode::append_existing` as needed.
+
+* `buffers_range_ref` is preferred to `std::reference_wrapper`.
+ ['Actions Required]:
+ - Call `buffers_range_ref` with the buffer, instead of calling
+ `buffers_range` with a reference wrapper constructed from
+ the buffer.
+
+* Nested `lowest_layer` and `lowest_layer_type` are removed.
+ ['Actions Required]: Use the free function `get_lowest_layer` and the
+ type trait `lowest_layer_type` instead.
+
+[*Examples]
+
+* ([issue 1100]) http-crawl clears the response before each read
+
+* ([issue 1347]) Improve echo-op
+
+* ([issue 1401]) Examples use `flat_buffer`
+
+* New websocket-chat-multi example
+
+* `async_echo` works with move-only handlers
+
+[*Fixes]
+
+* ([issue 1223]) HTTP read counts bytes correctly when an error occurs
+
+* ([issue 1247]) Update `ssl_stream` for Asio changes
+
+* ([issue 1279]) Enable explicit instantiations of `websocket::stream`
+
+* ([issue 1290]) Don't use deprecated Asio interfaces
+
+* ([issue 1306]) `http::message` is not-a `boost::empty_value`
+
+* ([issue 1306]) `test::stream` has fewer dependencies
+
+* ([issue 1365]) Handler wrappers decay parameters sooner
+
+* ([issue 1408]) `session_alloc` is thread-safe
+
+* ([issue 1414]) Boost.System is header-only
+
+* ([issue 1418]) `test::stream` maintains a handler work guard
+
+* `buffers_cat` correctly skips empty buffers when iterated
+
+* `ostream` does not overflow or exceed the dynamic buffer's maximum size
+
+* A handler work guard is maintained on paused websocket operations
+
+* All behavior of default-constructed iterators is conforming
+
+* `file_mode::append_existing` works correctly
+
+[/-----------------------------------------------------------------------------]
+
[heading Boost 1.69]
-[* New Videos]
+[*New Videos]
[block'''
@@ -22,11 +171,11 @@
''']
-[* New Features]
+[*New Features]
* ([issue 1133]) Add `BOOST_BEAST_USE_STD_STRING_VIEW`
-[* Examples]
+[*Examples]
* New WebSocket server and browser-based client: [source_file example/cppcon2018]