diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce4df66e2ba1..4cf5c8ec79541 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,59 @@ ## master -## Unreleased - +## 0.8.0 (April 11, 2016) + +* Added a React Native / Relay TodoMVC example app. +* You can now render multiple Relay apps at once, each with their own store. + The following APIs are early versions and are as of yet undocumented so please + use them with caution. + * Added `Relay.Environment`. `Relay.Store` is now simply a global instance of + `RelayEnvironment`. To create your own isolated store and network subsystem, + create a `new RelayEnvironment()` and make use of it wherever `environment` + is required. + * Use `Relay.Environment#injectNetworkLayer` to inject a custom network layer + for use within the context of a particular `Relay.Environment` instance. + * Added `Relay.ReadyStateRenderer`. This component takes in an instance of + `Relay.Environment`, a `queryConfig` that conforms to the + `RelayQueryConfigInterface`, and a Relay `container`. It renders + synchronously based on the supplied `readyState`. This primitive enables you + to create alternatives to `Relay.Renderer` that fetch and handle data in a + custom way (eg. for server rendered applications). + * Added `Relay.Renderer` – a replacement for `Relay.RootContainer` that + composes a `Relay.ReadyStateRenderer` and performs data fetching. + `Relay.RootContainer` is now a wrapper around `Relay.Renderer` that + substitutes `Relay.Store` for `environment`. * Renamed the Flow type `RelayRendererRenderCallback` to `RelayRenderCallback`. * Renamed the Flow type `RelayQueryConfigSpec` to `RelayQueryConfigInterface`. * `RelayContainer.setVariables` will no longer check if the variables are - changed before rerunning the variables. To prevent extra work, check the + changed before re-running the variables. To prevent extra work, check the current variables before calling `setVariables`. +* You can now roll back mutations in the `COMMIT_QUEUED` state using + `RelayMutationTransaction#rollback`. +* When specifying a `NODE_DELETE` or `RANGE_DELETE` mutation config, you can + omit `parentID` if your parent, in fact, does not have an ID. +* In cases where you query for a field, but that field is unset in the response, + Relay will now write `null` into the store for that field. This allows you to + return smaller payloads over the wire by simply omitting a key in the JSON + response, rather than to write an explicit `fieldName: null`. +* If the `relay` prop does not change between renders, we now recycle the same + object. This should enable you to make an efficient `this.props.relay === + nextProps.relay` comparison in `shouldComponentUpdate`. +* You can now craft a connection query having invalid combinations of connection + arguments (first/last/after/before) so long as the values of those arguments + are variables and not concrete values (eg. `friends(first: $first, last: + $last)` will no longer cause the Relay Babel plugin to throw). +* Added runtime validation to mutation configs to help developers to debug their + `Relay.Mutation`. +* Added `RelayNetworkDebug`. Invoke + `require('RelayNetworkDebug').init(Relay.DefaultNetworkLayer)` to enjoy simple + to read logs of your network requests and responses on the console. Substitute + your own network layer if you use one. +* Added two new `rangeBehaviors`: + * `IGNORE` means the range should not be refetched at all. + * `REFETCH` will refetch the entire connection. +* Connection diff optimization: Enables a mode where Relay skips diffing + information about edges that have already been fetched. This can be enabled by + adding `@relay(variables: ['variableNames'])` to a connection fragment. ## 0.7.3 (March 4, 2016) diff --git a/package.json b/package.json index 5cea10d3fda2c..4094fbd457433 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "react-relay", "description": "A framework for building data-driven React applications.", - "version": "0.7.3", + "version": "0.8.0", "keywords": [ "graphql", "react", @@ -34,7 +34,7 @@ "react-static-container": "^1.0.0-alpha.1" }, "peerDependencies": { - "babel-relay-plugin": "0.7.3", + "babel-relay-plugin": "0.8.0", "react": "^15.0.0 || ^0.14.0" }, "devDependencies": { diff --git a/scripts/babel-relay-plugin/package.json b/scripts/babel-relay-plugin/package.json index e911994c6adc5..3d7de71063491 100644 --- a/scripts/babel-relay-plugin/package.json +++ b/scripts/babel-relay-plugin/package.json @@ -1,6 +1,6 @@ { "name": "babel-relay-plugin", - "version": "0.7.3", + "version": "0.8.0", "description": "Babel Relay Plugin for transpiling GraphQL queries for use with Relay.", "license": "BSD-3-Clause", "repository": "facebook/relay", diff --git a/website/core/SiteData.js b/website/core/SiteData.js index 9b9b38651788d..5cc87a0d32c07 100644 --- a/website/core/SiteData.js +++ b/website/core/SiteData.js @@ -12,5 +12,5 @@ 'use strict'; module.exports = { - version: '0.7.3' + version: '0.8.0' };