# Change Log All notable changes to this project will be documented in this file starting with v0.8.6. This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0. Changes are grouped as follows: - **Added** for new features. - **Changed** for changes in existing functionality. - **Deprecated** for once-stable features to be removed in upcoming releases. - **Removed** for deprecated features removed in this release. - **Fixed** for any bug fixes. - **Security** to invite users to upgrade in case of vulnerabilities. ## [0.12.0] - Unreleased ### Added - `React::Server` is provided as a module wrapping the original `ReactDOMServer` API, require `react/server` to use it. (#186) - `React::Config` is introduced, `environment` is the only config option provided for now. See [#204](https://github.com/ruby-hyperloop/hyper-react/issues/204) for usage details. ### Changed - State syntax is now consistent with Hyperloop::Store, old syntax is deprecated. (#209, #97) ### Deprecated - Current ref callback behavior is deprecated. Require `"react/ref_callback"` to get the updated behavior. (#188) - `Hyperstack::Component::ReactAPI.render_to_string` & `Hyperstack::Component::ReactAPI.render_to_static_markup` is deprecated, use `React::Server.render_to_string` & `React::Server.render_to_static_markup` instead. (#186) - `react/react-source` is deprecated, use `react/react-source-browser` or `react/react-source-server` instead. For most usecase, `react/react-source-browser` is sufficient. If you are using the built-in server side rendering feature, the actual `ReactDOMServer` is already provided by the `react-rails` gem. Therefore, unless you are building a custom server side rendering mechanism, it's not suggested to use `react/react-source-server` in browser code. (#186) ### Removed - `react-latest` & `react-v1x` is removed. Use `react/react-source-browser` or `react/react-source-server` instead. - Support for Ruby < 2.0 is removed. (#201) ### Fixed - [NativeLibrary] Passing native JS object as props will raise exception. (#195) - Returns better error message if result of rendering block is not suitable (#207) - Batch all state changes and execute *after* rendering cycle (#206, #178) (Code is now moved to Hyper::Store) You can revert to the old behavior by defining the `React::State::ALWAYS_UPDATE_STATE_AFTER_RENDER = false` - Memory Leak in render context fixed (#192) ## [0.11.0] - 2016-12-13 ### Changed - The whole opal-activesuppport is not loaded by default now. This gave us about 18% size reduction on the built file. If your code rely on any of the module which is not required by hyper-react, you need to require it yourself. (#135) ### Deprecated - Current `Hyperstack::Component::ReactAPI.render` behavior is deprecated. Require `"react/top_level_render"` to get the updated behavior. (#187) - `React.is_valid_element` is deprecated in favor of `Hyperstack::Component::ReactAPI.is_valid_element?`. - `expect(component).to render('
')` is now deprecated in favor of `expect(component).to render_static_html('
')`, which is much clearer. ### Fixed - `ReferenceError: window is not defined` error in prerender context with react-rails v1.10.0. (#196) - State might not be updated using `React::Observable` from a param. (#175) - Arity checking failed for `_react_param_conversion` & `React::Element#initialize` (#167) ## [0.10.0] - 2016-10-30 ### Changed - This gem is now renamed to `hyper-react`, see [UPGRADING](UPGRADING.md) for details. ### Fixed - ReactJS functional stateless component could not be imported from `NativeLibrary`. Note that functional component is only supported in React v14+. (#162) - Prerender log got accumulated between reqeusts. (#176) ## [0.9.0] - 2016-10-19 ### Added - `react/react-source` is the suggested way to include ReactJS sources now. Simply require `react/react-source` immediately before the `require "reactrb"` in your Opal code will make it work. ### Deprecated - `react-latest` & `react-v1x` is deprecated. Use `react/react-source` instead. ### Removed - `opal-browser` is removed from runtime dependency. (#133) You will have to add `gem 'opal-browser'` to your gemfile (recommended) or remove all references to opal-browser from your manifest files. ### Fixed - `$window#on` in `opal-jquery` is broken. (#166) - `Element#render` trigger unnecessary re-mounts when called multiple times. (#170) - Gets rid of react warnings about updating state during render (#155) - Multiple HAML classes (i.e. div.foo.bar) was not working (regression introduced in 0.8.8) - Don't send nil (null) to form components as the value string (#157) - Process `params` (props) correctly when using `Element#on` or `Element#render` (#158) - Deprecate shallow param compare (#156) ## [0.8.8] - 2016-07-13 ### Added - More helpful error messages on render failures (#152) - `Element#on('')` subscribes to `my_event_name` (#153) ### Changed - `Element#on(:event)` subscribes to `on_event` for reactrb components and `onEvent` for native components. (#153) ### Deprecated - `Element#on(:event)` subscription to `_onEvent` is deprecated. Once you have changed params named `_on...` to `on_...` you can `require 'reactrb/new-event-name-convention.rb'` to avoid spurious react warning messages. (#153) ### Fixed - The `Element['#container'].render...` method generates a spurious react error (#154) ## [0.8.7] - 2016-07-08 ### Fixed - Opal 0.10.x compatibility ## [0.8.6] - 2016-06-30 ### Fixed - Method missing within a component was being reported as `incorrect const name` (#151)