Repository  -  API  -  Source


14 Jan 2020 14:36:00 GMT

Stable release including all the changes of 0.1.25-* alpha releases.


14 Jan 2020 14:36:00 GMT

Stable release including all the changes of 0.1.24-* alpha releases.


4 Nov 2019 14:36:00 GMT

Stable release including all the changes of 0.1.23-* alpha releases.


4 Nov 2019 14:23:00 GMT


  • Update Misk Admin Dashboard multibindings generated in CLI misk command


29 Oct 2019 19:58:00 GMT


  • Add max workers to Jest configuration to prevent CircleCI out of memory errors


16 Oct 2019 14:40:00 GMT


  • Plumb out failureSaga option for similar purpose to mergeSaga except for in failure cases
  • For example, a failureSaga could be added to a simpleHttpPost call that on call failure, issues a network request retry or other action


15 Oct 2019 17:24:00 GMT


  • Update DashboardMetadataAction path to /api/dashboard/{dashboardId}/metadata


15 Oct 2019 17:24:00 GMT


  • Update MiskContainer to support Misk API changes to DashboardMetadataAction and ServiceMetadataAction


1 Oct 2019 15:24:00 GMT


Fix bug in handler parsing of options.overrideArgs.


1 Oct 2019 15:24:00 GMT


Update handler functions to accept overrideArgs in the options object, instead of as a seperate function parameter. This specifically improves the usage for onClick functions as outlined below where empty options object no longer need to be used to reach the overrideArgs parameter.

// Old
<Button onClick={handler.simpleMergeData(props, "my-tag", {}, data)}/>

// New
<Button onClick={handler.simpleMergeData(props, "my-tag", { overrideArgs: data })}/>


25 Sept 2019 16:24:00 GMT

Stable release including all the changes of 0.1.20-* alpha releases.


25 Sept 2019 15:24:00 GMT


  • Fix more bugs found using mergeSagaMapKeysToTags in different use cases.


25 Sept 2019 14:24:00 GMT


  • New dedicated mergeSaga file for all library provided generic mergeSaga that can optionally be used in dispatchSimpleRedux calls to add post call asynchronous functionality
  • Rename mapMergeSaga to mergeSagaMapKeysToTags and move to separate mergeSaga file
  • Add documentation and stub out test for mergeSagaMapKeysToTags


27 Sept 2019 11:24:00 GMT


  • Table component now takes a range [start: number, end: number] to signify the rows to display. This replaces the maxRows props.


  • simpleSelectorPickTransform extends existing simpleSelectorPick (which matches Lodash's Pick API) to allow for reshaping the object with picked keys.
  • dispatchSimpleRedux functions now take an options object that allows for named passing in of requestConfig and mergeSaga. mergeSaga accepts a generator function Saga that will run after the dispatch function's action is executed. This means that a simpleHttpGet will execute first and then the response will be included in the payload that the mergeSaga has access to. mergeSaga is then responsible to choose whether to emit any additional state update events or handle other asynchronous computation. Since it is a full saga and a generating function, the block of computation is asynchronous and follow up network requests or large computation can be done without risk of blocking render. See a full example of this in the new ExampleMergeSagaContainer in palette-exemplar.
  • Universal handler. Many components allow for passing in an onChange handler that is a function accepting user event driven input and executing side effects. For example, an <InputGroup/> returns the latest text in the text box, and a simple onChange handler would persist the latest text in a tagged spot in Redux. Components though do not have a universal form of input they provide to their onChange handler. Instead of developers having to keep track of what function signature the component onChange props is expecting, @misk/simpleredux now has a universal handler that provides the same function names as dispatchSimpleRedux (ie. handler.simpleMergeData, handler.simpleHttpGet...) but can handle directly input from an component onChange or onClick props.
  • The universal handler can handle input from any onChange or onClick props because of a new parseOnChangeArgs engine that identifies the format of input from onChange and returns it in a format that the dispatchSimpleRedux functions can use. See examples of handler in both starter-basic and palette-exemplar tabs.
  • onFn[Click,Change,Toggle,Tags]Call functions are deprecated in favor of handler.


25 Sept 2019 20:40:00 GMT


  • new command now accepts two positional arguments for titleCase and slugCase names for the new tab to be generated. The Misk-Web CLI no longer requires manual invocation of ./!

Example Tabs

  • Add support to ./ that allow starter-basic to be used in docs site demo and as template for new tabs
  • Add Palette-Exemplar and Palette-LTS tabs to docs site example demos


25 Sept 2019 20:40:00 GMT


  • Upstream new <Table data={data} maxRows={5} /> component from palette-exemplar tab for tables that autogenerate from a list of objects.

Example Tabs

  • New starter-basic tab for use in miskweb new creation of new tabs. Much simpler bare bones structure making for a less overwhelming start for new tab developers.
  • palette-exemplar will remain to showcase more advanced features and use cases


17 Sept 2019 19:19:00 GMT

Stable release including all the changes of 0.1.19-* alpha releases.

  • Bug fixes for 0.1.18 release of @misk/simpleredux
  • New MiskNavbarContainer in @misk/core


17 Sept 2019 18:25:00 GMT


  • Upstream from Misk, the MiskNavbarContainer that can be extended to support front end dashboards for any Misk service


16 Sept 2019 18:34:00 GMT


  • Reverse changes from 0.1.19-1
  • Add new dispatch function simpleMergeData that does the similar encapsulation instead to provide that functionality to call sites that aren't using on*FnCall utilities
  • Deprecated simpleFormInput now resolves to simpleMergeData instead of simpleMerge


16 Sept 2019 15:55:00 GMT


  • Update onChangeFnCall, onChangeToggleFnCall and onChangeTagFnCall to call functions with data enclosed in an object with a data key. This will fix outstanding bugs from the new simpleMerge` functionality. No migration should be required.
    • Old
      export const onChangeFnCall = (callFn: any, ...args: any) => (event: any) => {
    • New
      export const onChangeFnCall = (callFn: any, ...args: any) => (event: any) => {
      callFn(...args, { data: });


13 Sept 2019 20:16:00 GMT


  • Move HTTPMethodDispatch from @misk/core to @misk/simpleredux to fix and prevent future API drift


13 Sept 2019 17:52:00 GMT

Stable release including all the changes of 0.1.18-* alpha releases.


13 Sept 2019 15:18:00 GMT


  • Update Yargs library usage. There should no longer be deprecation warnings!


12 Sept 2019 15:18:00 GMT


  • Unified SimpleRedux flow merging together SimpleForm and SimpleNetwork
  • Extensive test coverage across new flow
  • Usage of old SimpleForm and SimpleNetwork Redux elements now call out to the new SimpleRedux flow and log deprecation warnings encouraging upgrading to the unified flow.


12 Sept 2019 14:57:00 GMT


  • Add ResponsiveAppContainer that extends ResponsiveContainer with styling to keep it below the Navbar
  • Make environmentToColor theme configuration easier with lookup table now as a parameter to create the function
  • See examples in the Custom Styling docs


11 Sept 2019 20:17:00 GMT


  • Navbar is now themable!
  • Override the default theme by providing a new theme through props
  • Take advantage of the defaultTheme if you only want to change one of the theme values
  • See examples in the Custom Styling docs


10 Sept 2019 20:59:00 GMT


  • Added new props to Navbar to allow customization of MenuButton. All are optional and have sane defaults for the default interaction of showing the menu with respective icons.
    • menuIcon?: IconName | JSX.Element | string: Set the icon that shows when the menu is closed. It can be a BlueprintJS IconName, a React JSX.Element, or a string URL to an image.
    • menuOpenIcon?: IconName | JSX.Element | string: Set the icon that shows when the menu is open. It can be a BlueprintJS IconName, a React JSX.Element, or a string URL to an image.
    • menuButtonAsLink?: boolean: Show the menuIcon and onClick go to the homeUrl instead of opening the menu.
    • menuShowButton?: boolean: Hide the MenuButton entirely.


  • Add @testing-library/dom library for easier tests that check for certain rendered elements or text


22 Aug 2019 22:18:00 GMT


  • Move around files in library
  • There should be no change in functionality


22 Aug 2019 19:54:00 GMT


  • Deprecate simpleSelect in favor of two new functions: simpleSelectorGet and simpleSelectorPick
  • Both new functions have the same API and under the hood use Lodash corresponding functions get and pick
  • Update simpleSelect calls to either of the two new functions soon as simpleSelect will be removed in a future release
  • See more in @misk/simpleredux documentation


  • Allows for single-key cached selection from Redux state

  • Most directly equivalent to deprecated simpleSelect

    // OLD
    const field1 = simpleSelect(props.simpleForm, "Dino::Field1", "data")
    const tagsField = simpleSelect(props.simpleForm, "Dino::Tags", "data", simpleType.array)
    // NEW
    const field1 = simpleSelectorGet(props.simpleForm, ["Dino::Field1", "data"])
    const tagsField = simpleSelectorGet(props.simpleForm, ["Dino::Tags", "data"], [])


  • Allows for multi-key cached selection from Redux state

    // OLD
    const fields = [
      "Itemized Receipt",
    ].map((f: string) => `Dino::${f}`)
    const fieldsData = fields
      .map((key: string) => {
        const value = simpleSelect(props.simpleForm, key, "data")
        return { [key]: value }
      .reduce((prev, current) => ({...prev, ...current}), {})
    // New
    const fields = [
      "Itemized Receipt",
    ].map((f: string) => `Dino::${f}.data`)
    const fieldsData = simpleSelectorPick(props.simpleForm, fields)


20 Aug 2019 14:00:00 GMT

  • Stable release


15 Aug 2019 14:00:00 GMT


  • Use webpack alias for src/ and tests/ imports


  • Use moduleNameMapper in jest for src/ and tests/ imports


14 Aug 2019 16:15:27 GMT


  • Use ShellJS instead of process.exit to pass through exit code


14 Aug 2019 16:05:27 GMT


  • Exit with failure codes from executed scripts so that CLI fails if downstream tasks fail


14 Aug 2019 14:16:27 GMT

  • Bump react and react-dom from 16.8.6 to 16.9.0


  • Migrate from react-testing-library to @testing-library/react (package was renamed)
  • Bump @testing-library/react from 6.1.2 to 9.1.1
  • All test files with imports from react-testing-library will need to be changed to import from @testing-library/react


14 Aug 2019 13:39:27 GMT


  • Two new keys added to miskTab.json for expanded configuration of the Webpack build provided by @misk/dev
    • rawIndex option stops injecting unused Script tags in Misk Loader tab, instead copies the index.html from src as is without any processing
    • useWebpackBundleAnalyzer allows turning off or on in non-production environments Webpack Bundler Analyzer reports


  • New IRouterProvidedProps interface to be uesd to access the optionally injected React-Router props of history, location, and match. Useful for handling path parameters, see the docs for more.


15 Jul 2019 12:29:37 GMT


  • New SimpleReduxSaga type to alias the type of a rootSaga in a tab's src/ducks/index.ts to support bumping redux-sagas library. It looks as follows.
    export function* rootSaga(): SimpleReduxSaga {
      yield all([

Old Changelog


February 21, 2019


February 20, 2019


February 20, 2019


February 14, 2019


February 7, 2019


February 7, 2019


November 30, 2018


November 8, 2018

Update src/index.html to include the following

    <!-- Misk Libraries -->
    <link rel="stylesheet" type="text/css" href="/@misk/common/styles.css" />
    <script type="text/javascript" src="/@misk/common/vendors.js" preload></script>
    <script type="text/javascript" src="/@misk/common/common.js" preload></script>
    <script type="text/javascript" src="/@misk/core/components.js" preload></script>


November 5, 2018

Replace all imports of react-emotion with styled-components.

In src/ducks/index.ts update rootReducer and IState to the following

  import {
  } from "connected-react-router"
  import { History } from "history"
  import { combineReducers, Reducer } from "redux"


  export interface IState {
    loader: ILoaderState
    router: Reducer<RouterState, LocationChangeAction>


  export const rootReducer = (history: History) =>
        loader: LoaderReducer,
        router: connectRouter(history)


October 28, 2018

Replace src/index.tsx with the following:

  import { createApp, createIndex } from "@misk/core"
  import * as Ducks from "./ducks"
  import routes from "./routes"
  export * from "./components"
  export * from "./containers"

  createIndex("config", createApp(routes), Ducks)

Delete src/App.tsx.


November 1, 2018

Replace src/index.html with the following:

  <!DOCTYPE html>

      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">

      <div id="<%= htmlWebpackPlugin.options.slug %>"></div>

      <!-- Misk Libraries -->
      <script type="text/javascript" src="/@misk/common/styles.js" async></script>
      <script type="text/javascript" src="/@misk/common/vendors.js" preload></script>
      <script type="text/javascript" src="/@misk/common/common.js" preload></script>
      <script type="text/javascript" src="/@misk/core/components.js" preload></script>


Create a file prettier.config.js with the following:

  const { createPrettierConfig } = require("@misk/dev")
  module.exports = createPrettierConfig()

This was reverted on 2018-11-05: Replace all imports of styled-components with react-emotion.

Add the following to package.json and add it as a prerequisite to build and start steps.

  "lint": "prettier --write --config prettier.config.js \"./src/**/*.{md,css,sass,less,json,js,jsx,ts,tsx}\"",

Change miskTabBuilder to createTabWebpack in webpack.config.js.

Change makeExternals to createExternals in webpack.config.js.