Introduction of Animation API

It’s currently not very well documented, but the animation API was implemented. See #76 for more information until documentation is updated.


Breaking Changes

  • Yank the current animations API
    • This is undergoing a redesign to more effective coordinate animations with each other
  • Remove ActionObservable extension to Kefir in favor of #thru & ofType helper function
    • This eliminates the problem of not always having ofType available on the prototype chain of the returned actions$.
  • Remove default export from brookjs
    • There’s no reason to use this. I borrowed the idea from Kefir, but didn’t really think critically about why it should or should not be available here. I don’t expect this to impact anyone, as it doesn’t affect normal import { ... } from 'brookjs' nor const { ... } = require('brookjs') usages.


Bugfix: Still trying to nail down that mutations dedupe logic. This will not be necessary once we bind children to diffhtml middleware.


  • Update patchAsObservable to blacklist unsettable properties


  • Bump version of diffhtml



  • Fix bug when updating root blackboxed element


  • Update dependencies
  • Switch to useBuiltins for all transforms.


Bugfix: Fix mutation actions dedupe algorithm.

Fixes bug causing children to become inert.


Busted previous release.


Bugfix: Curry the renderFactory function


  • New Feature: Animation support
  • New rendering engine: diffhtml
  • Allow mounting DOM without template
  • Export Kefir through the
    • Extend the library with custom ActionObservable
  • Internal: Test improvements


  • BREAKING: All deprecated code removed. If you saw no warnings in your console, this release comes with no changes. If not, you’ll need to update your deprecated code before v0.8.0, which will introduce animations.
  • Major Documentation Overhaul: All docs have been written and should cover everything you need to write a brookjs application.


  • Add ProxyEvent to wrap DOM events
    • This provides an abstraction we can build upon, as well as 2 new properties: containerTarget & decoratedTarget
  • Modify behavior of mapActionTo to use meta instead of adding source directly to the action
    • Deprecate the source property currently added to the action
  • Deprecate component in favor of view in domDelta

All deprecated code will be removed in the next release.


Published under the beta tag on npm.

Use npm i brookjs@beta to install.

A number of breaking changes in this release. The first is data-brk-container no longer provides blackboxing; that’s handled explicitly through the new data-brk-blackbox attribute, which protects a node from being updated by the rendering process.

The rendering process is also handled by the root node, rather than streaming props into individual components. This reduces the mismatch in how you think about the props provided to the template; you no longer end up with props coming in either from the parent template (on page loader) rather than through modifyChildProps (during the FE application lifecycle).

If you’re heavily relying on modifyChildProps to thread the needle between the FE context & BE context, you’re going to have a rough time upgrading. The best way to go about it is update all your modifyChildProps streams to pass the same props the template passes in through the Handlebars template. From there, if there’s no onMount in the child component, you can just remove modifyChildProps entirely. If you have components which you heavily relied on an internal implementation (often handled through onMount), you’ll just need to blackbox your component with data-brk-blackbox and maintain modifyChildProps to whatever the onMount needs.

  • BREAKING: Remove render$ from combinator in component. This is a result of a change in the internals, which we’re sets up an incoming change in the rendering context.
  • BREAKING: Rendering now happens from the root component down, rather than streaming individual values into individual components. This allows Handlebars to be the only context through which the developer has to understand the data flow into the DOM.
  • BREAKING: Blackboxing is now handled explicitly through the use of dat-brk-blackbox. This can be used to carve out sections of the DOM from being updated, rather than the "container hack."


  • Adds ofType method, cribbed from redux-observable, to the actions$ stream passed to the delta. This should make writing deltas a lot cleaner.
  • Add domDelta. This should be used to mount the dom on page loads. Waits until DOM is ready to mount the component.
  • Add some documentation for domDelta.


Still having problems with publishing to npm. Opened an issue with them about it:


  • Fix bug in the children’s mutations$ stream where duplicate nodes were improperly removed


  • Fixed timing of the deprecation warning added to the child actions


I’m going to blame this on either my npm version or the AWS outage, but this release did work this time.



  • Fix a bug whereby an added node could be dispatched down the mutations$ stream twice if the parent node and child container node were appended to the DOM separately.


  • Add additional modules to the main brookjs export
  • Add keyAttribute helper function
  • Update preplug to take key as well
    • Deprecate the inclusion of action.key
    • preplug should attach whatever data is needed to the Action from the child$ stream
  • Add a TON of documentation
    • Some minor style changes
    • Walkthrough of the various aspects of a Component


  • Fix bug in children factory normalization
  • Improve children unsubscription logic


  • Fix bug in rendering (again)
  • Update modifyChildProps to pass the child’s key
    • This supersedes the use of key in the children configuration.
    • key is now deprecated. Will be removed in a future release.
  • Add changelog to the brookjs documentation site


  • Add missing exports to entry point. Fixes #16.
  • Fix rendering bug when dealing with rendering children.


  • Remove use of Array.from (#15)
    • Eliminates an unneeded dependency
  • Add support to combineActionReducers for a default state (#14)


Initial release.