Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix keys, normalize holes #2452

merged 3 commits into from Jul 3, 2019

Fix keys, normalize holes #2452

merged 3 commits into from Jul 3, 2019


Copy link

@isiahmeadows isiahmeadows commented Jul 3, 2019


  • Require fragments to either have only keyed children or no keyed children.
  • Ban holes from keyed fragments, to reduce complexity in the keyed diff algorithm.
  • Normalize booleans, null, and undefined to be a single hole sentinel null, to simplify representation.
  • Document a common pattern on how to have a programmatically replaceable node, to resolve some confusion around that.

Motivation and Context

Closes #2434
Fixes #2248

Also resolves a class of paper cuts that have found their way onto Gitter the past several months with v1.

How Has This Been Tested?

Added a couple tests, updated a bunch, rewrote a few.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation change


  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I have updated docs/
isiahmeadows added 2 commits Jul 3, 2019
This brings a lot better consistency with that API, even though it's
slightly breaking. (I had to update a bunch of tests to correspond with
@project-bot project-bot bot added this to Needs triage in Triage/bugs Jul 3, 2019
@isiahmeadows isiahmeadows merged commit 6c562d2 into MithrilJS:next Jul 3, 2019
Triage/bugs automation moved this from Needs triage to Closed Jul 3, 2019
@isiahmeadows isiahmeadows deleted the fix-keys branch Jul 3, 2019
Copy link

@ancms2600 ancms2600 commented Sep 1, 2019

moved to: #2526
Feature Request: Normalize vnode.children passed to m() hypertext
(flatten arrays, omit null, undefined and false)


Copy link
Member Author

@isiahmeadows isiahmeadows commented Sep 4, 2019

@ancmikesmullin Please file a new issue with that suggestion.


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked issues

Successfully merging this pull request may close these issues.

2 participants