yew v0.17.0 Release Notes

Release Date: 2020-06-29 // almost 4 years ago
  • ๐Ÿ”„ Changelog

    • ๐Ÿฑ โšก๏ธ Features

    ๐Ÿ‘ Allow agents to send input messages to themselves. [@mkawalec, #1278]

    ๐ŸŽ Rendering performance has been improved by ~20%. [@jstarry, #1296, #1309]

    html!: Elements can be specified with dynamic tag names. [@siku2, #1266]

    In order to specify a dynamic tag name, wrap an expression with @{..}:

    let tag\_name = "input";html! { \<@{tag\_name} value="Hello" /\> }
    

    HTML button element type can now be specified ("submit", "reset", or "button"). [@captain-yossarian, #1033]

    All global event listeners can be used as listeners (onerror, onloadend, and many more). [@siku2, #1244]

    PartialEq is now implemented for VChild when properties also implement PartialEq. [@kellpossible, #1242]

    Agent callbacks now accept Into<Message> to improve ergonomics. [@totorigolo, #1215]

    Agents can now send messages to themselves. [@totorigolo, #1215]

    • ๐Ÿ›  Fixes

    Bincode dependency version has been loosened 1.2.1 -> 1. [@jstarry, #1349]

    ๐Ÿ›  Keyed list ordering algorithm has been fixed. [@totorigolo and @jstarry, #1231]

    html!: key and ref are no longer ignored for components with no properties. [@jstarry, #1338]

    html!: List rendering behavior is consistent no matter which syntax is chosen. [@siku2, #1275]

    html! { for node_list } is now equivalent to html! { node_list } when node_list is a Vec<VNode>.

    0๏ธโƒฃ KeyboardService events can now have default behavior prevented. [@ghpu, #1286]

    Yew will check the current DOM input value before comparing with the desired value. [@ShadoySV, #1268]

    html!: Void elements (<br/>, <input />) are no longer allowed to have children. [@kaoet, #1217]

    Local agents no longer require Input and Output to implement Serializable. [@mkawalec, #1195]

    • ๐Ÿฑ ๐Ÿšจ Breaking changes

    โšก๏ธ Renders are now done lazily and will not be executed until all updates have been processed. [@jstarry, #1309]

    ๐Ÿ”Š ConsoleService, DialogService, IntervalService, RenderService, TimeoutService, and WebSocketService methods are now static. [@teymour-aldridge, #1313]

    html!: Children no longer implements Renderable. [@siku2, #1275]

    ๐Ÿ‘ฏ Replace instances of self.props.children.render() with self.props.children.clone().

    0๏ธโƒฃ Yew no longer stops propagation of events by default. [@jstarry, #1256]

    Event propagation is usually stopped when you have event listeners attached to nested elements and do not want the event to bubble up from where it was first captured. If your app has this behavior, you can stop propagation by calling stop_propagation() on the desired event.

    ๐ŸŒ The onsubmit listener now uses FocusEvent instead Event when using web-sys. [@siku2, #1244]

    ๐Ÿšš The onmousewheel and ontouchenter listeners have been removed. [@siku2, #1244]

    The ondoubleclick listener is now named ondblclick. [@siku2, #1244]

    FetchService methods are now static. [@teymour-aldridge, #1235]

    Instead of FetchService::new().fetch(..) you should now use FetchService::fetch(..)

    The send_message_batch method has been removed from AgentLink. [@totorigolo, #1215]

    ๐Ÿ‘ Minimum supported rust version has been bumped from 1.40.0 to 1.42.0. [@mkawalec, #1195]

    Every agent Reach type is now generic. [@mkawalec, #1195]

    In order to fix your app, simply append <Self> to the reach:

    Reach = Context -> Reach = Context<Self>

    โœ‚ Removed Global agent because it was never implemented. [@jstarry, #1202]

    โฌ‡๏ธ Reduced visibility of internal agent types that were not intended to be public. [@jstarry, #1202]