Skip to content

Commit 3b284a5

Browse files
Merge pull request #416 from Workiva/3.1.0-wip
RM-58642 Release over_react 3.1.0
2 parents e7b7035 + 697606b commit 3b284a5

File tree

379 files changed

+37918
-5398
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

379 files changed

+37918
-5398
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
language: dart
22

33
dart:
4+
- '2.4.1' # TODO: Remove this and bump the lower SDK bound to 2.6.0 once released.
45
- stable
56
- dev
67

CHANGELOG.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,66 @@
11
# OverReact Changelog
22

3+
## [3.1.0](https://github.com/Workiva/over_react/compare/3.0.0+dart2...3.1.0)
4+
5+
### Full React JS 16.x Component Lifecycle Support
6+
7+
- The new `UiComponent2` classes<sup>*</sup> replace the now deprecated `UiComponent` classes.
8+
9+
<sup>*</sup>_(`UiComponent2`, `UiStatefulComponent2`, `FluxUiComponent2`)_
10+
- Faster
11+
- Initial renders ~10% faster
12+
- Re-renders ~7 - 30% faster
13+
- Improved developer experience
14+
- Props and state values now show up in the React DevTools just as they would if you were using React JS, and primitive values (strings, numbers, booleans) can be edited live, just like in React JS!
15+
16+
![React DevTools with Component2](https://user-images.githubusercontent.com/1750797/68478015-1259b500-01ec-11ea-92bf-0bd432cd4001.gif)
17+
- Easier to maintain
18+
- Easier integration with JS libs
19+
- `ReactJsComponentFactoryProxy` makes it easy to use JS components with Dart!
20+
- [Check out this example of MaterialUI components!](https://github.com/cleandart/react-dart/blob/5.1.0-wip/example/js_components/js_components.dart#L115-L145)
21+
- Supports new lifecycle methods, allowing us to use Concurrent Mode in the future
22+
- <s>`componentWillMount`</s> => `componentDidMount`
23+
- <s>`componentWillReceiveProps`</s> => `getDerivedStateFromProps` _(new)_
24+
- <s>`componentWillUpdate`</s> => `getSnapshotBeforeUpdate` _(new)_
25+
- `componentDidCatch` / `getDerivedStateFromError` _(new)_
26+
- Adds support for [error boundaries](https://reactjs.org/docs/error-boundaries.html).
27+
- OverReact also provides an `ErrorBoundary` component out of the box that you can wrap around your components, and an `ErrorBoundaryMixin` that you can use as a starting point to build your own custom error boundary component!
28+
29+
> [__Learn more about upgrading to `UiComponent2`__](https://github.com/Workiva/over_react/blob/master/doc/ui_component2_transition.md#updating)
30+
31+
### Improved, stable [Context](https://reactjs.org/docs/context.html) API
32+
33+
- _"Context provides a way to pass data through the component tree without having to pass props down manually at every level. … Context is primarily used when some data needs to be accessible by many components at different nesting levels. Apply it sparingly because it makes component reuse more difficult."_
34+
35+
### New `over_react_redux.dart` Library
36+
37+
- To take full advantage of the new stable `Context` API, we have built atop
38+
the awesome [redux.dart library](https://github.com/johnpryan/redux.dart) to make it easy
39+
to set up redux provider(s) / consumer(s) for OverReact components that enable granular, targeted updates!
40+
- Check out [some examples](https://github.com/Workiva/over_react/tree/master/web/over_react_redux)
41+
by cloning this project locally, running `webdev serve` from the root of the project, and navigating to <http://localhost:8080/over_react_redux/>.
42+
- Use it in your project by [upgrading your `UiComponent`s to `UiComponent2`](https://github.com/Workiva/over_react/blob/master/doc/ui_component2_transition.md#updating) and importing `package:over_react/over_react_redux.dart`!
43+
- We've even got some sweet [redux dev tools you can use](https://github.com/Workiva/over_react/blob/master/doc/over_react_redux_documentation.md#using-redux-devtools) to make the inspection of connected state a breeze!
44+
![over_react_redux.dart developer tools](http://g.recordit.co/NLeAZQkCFm.gif)
45+
46+
> [__Learn more about using over_react_redux.dart__](https://github.com/Workiva/over_react/blob/master/doc/over_react_redux_documentation.md)
47+
48+
### [Portals](https://reactjs.org/docs/portals.html)
49+
50+
- _"Portals provide a first-class way to render children into a DOM node that exists outside the DOM hierarchy of the parent component."_
51+
52+
### [Fragments](https://reactjs.org/docs/fragments.html)
53+
54+
- _"A common pattern in React is for a component to return multiple elements. Fragments let you group a list of children without adding extra nodes to the DOM."_
55+
- `UiComponent.render()` can now return a `ReactFragment` (multiple children) or other values like strings and lists instead of just a single `ReactElement`.
56+
57+
### No more Dart 1 SDK support
58+
59+
- With the release of `3.1.0` comes the end of our `+dart1` / `+dart2` dual releases that we have been
60+
maintaining for over a year. Time to upgrade to Dart 2!
61+
62+
> [Full list of 3.1.0 Changes](https://github.com/Workiva/over_react/milestone/3?closed=1)
63+
364
## 3.0.2
465

566
Dependency updates:
@@ -42,6 +103,15 @@ __ReactJS 16.x Support__
42103
43104
* This release brings in the `SafeRenderManager` utilities added to the 3.x alpha line-of-release via [#390]
44105

106+
## 2.7.0
107+
108+
> Complete `2.7.0` Changsets:
109+
>
110+
> - [Dart 2](https://github.com/Workiva/over_react/compare/2.6.1+dart2...2.7.0+dart2)
111+
> - [Dart 1](https://github.com/Workiva/over_react/compare/2.6.1+dart1...2.7.0+dart1)
112+
113+
* This release brings in the `SafeRenderManager` utilities added to the 3.x alpha line-of-release via [#390]
114+
45115
## 2.6.1
46116

47117
> Complete `2.6.1` Changsets:

CONTRIBUTING.md

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
- [Minimum Required Review](#minimum-required-review)
99
- [Review Types](#review-types)
1010
- [Manual Testing Criteria](#manual-testing-criteria)
11-
- [__Dart 1 & Dart 2 Dual-Releases__](#dart-1--dart-2-dual-releases)
1211

1312
---
1413

@@ -123,76 +122,3 @@ __If none of these apply, then manual testing instructions may be omitted.__
123122
_Examples:_
124123
- Test runner was updated.
125124
- New test suites were added.
126-
127-
---
128-
129-
## Dart 1 & Dart 2 Dual-Releases
130-
131-
Long story short, we are unable to maintain a single codebase of over_react that
132-
is compatible with both Dart 1 and Dart 2. Transformers only work on Dart 1 and
133-
builders only work on Dart 2, and we can't maintain the transformer and builder
134-
together due to dependency conflicts.
135-
136-
> For more information on our Dart 2 migration, [see this guide](/doc/dart2_migration.md).
137-
138-
Fortunately, this problem can be shouldered entirely by the maintainers via a
139-
dual-release strategy (credit to the [dart2_constant](https://pub.dartlang.org/packages/dart2_constant)
140-
for the idea). The result is that consumers will depend on a version range of
141-
this library like they normally do and everything will _just work_.
142-
143-
For every _version_ we want to release, we will actually release two releases -
144-
a Dart 1 (transformer) version and a Dart 2 (builder) version. These two
145-
releases will have the same semantic version, but will have unique build
146-
suffixes. The `pub` client will then decide which one to install based on their
147-
`environment.sdk` constraints and the active Dart SDK version.
148-
149-
### Branches
150-
151-
- `master`
152-
- Dart2-only
153-
- Provides a builder
154-
- Environment constraint: `>=2.1.0 <3.0.0`
155-
156-
- `master_dart1`
157-
- Dart1-only
158-
- Provides a transformer
159-
- Environment constraint: `>=1.24.3 <2.0.0`
160-
161-
### Release Process
162-
163-
> Note that these steps are intended to be followed by Workiva employees, and as
164-
> such have some references to internal tooling.
165-
166-
For every release, do the following:
167-
168-
1. Ensure the next release versions exist in MARV:
169-
170-
Name | Branch
171-
---- | ------
172-
over_react 2.x.x+dart1 | master_dart1
173-
over_react 2.x.x+dart2 | master
174-
175-
1. Trigger the `over_react 2.x.x+dart1` release first and review the PR:
176-
177-
- Ensure the updated `pubspec.yaml` version is correct, including the
178-
`+dart1` suffix.
179-
180-
- Ensure the build passes.
181-
182-
- Merge the Dart 1 release and publish it to pub.
183-
184-
1. Trigger the `over_react 2.x.x+dart2` release second and review the PR:
185-
186-
- Ensure the updated `pubspec.yaml` version is correct, including the
187-
`+dart2` suffix.
188-
189-
- Ensure the build passes.
190-
191-
- **Add any necessary changelog updates to the Dart 2 version.**
192-
193-
- Merge the Dart 2 release and publish it to pub.
194-
195-
1. Re-recreate the Dart 1 release in MARV (it does not get recreated
196-
automatically like the default release does).
197-
198-
1. Add the `+dart2` suffix to the automatically created release.

0 commit comments

Comments
 (0)