muiMaterial 0.2.0 (unreleased)
Breaking changes
-
TabContext.static()now follows the React<input>convention for tab state ownership. PassdefaultValuefor uncontrolled tabs (the wrapper owns and updates the active tab) andvaluefor controlled tabs (you own it; the value is honored on every render). The previousvalueargument behaved as an uncontrolled seed, so existing code should renamevaluetodefaultValue:# before TabContext.static(value = "one", ...) # after TabContext.static(defaultValue = "one", ...)Code that left
valueunchanged will become controlled and freeze on the first tab (clicks fire but the wrapper no longer updates state) unless anonChangewrites the value back. removed the deprecated
GridLegacy(),PigmentContainer(),PigmentGrid()andPigmentStack()wrappers. These mapped to MUI APIs that are no longer part of the supported@mui/materialsurface; useGrid()(andStack()/Container()) instead.
New features
TabContext.static()gains a controlled mode: passvaluetogether with a writer that updates it (anonChangeonTabList.static()/TabContext.static(), orTab(href = ...)links that change the URL) to make an external source the source of truth. This enables URL-bound, bookmarkable tabs viareactRouter::useParams(as = "value", ...), cross-component tab synchronization, and programmatic tab activation. See the Tabs vignette.TabContext.static()now emits a development console warning when it is used in controlled mode (valuesupplied) without anyonChangeto move the active tab – the same guidance React gives for a controlled<input>with no handler – pointing you to either add anonChangeor switch todefaultValue.new
*.shinyInput()family of Shiny-wired input wrappers covering the most commonly bound components (Autocomplete, BottomNavigation, Button, Checkbox, Dialog, Drawer, IconButton, Input, FilledInput, Fab, FormControlLabel, LoadingButton, Menu, MenuItem, Modal, NativeSelect, OutlinedInput, Pagination, Radio, RadioGroup, Rating, Select, Slider, Snackbar, StepButton, Switch, TabContext, TabList, TabPanel, Tabs, TextField, ToggleButton, ToggleButtonGroup) and matchingupdate*.shinyInput()helpers.new
*.triggerId()family for binding overlay components to an existing DOM element by id, with no server logic required:Dialog.triggerId(),Drawer.triggerId(),Menu.triggerId(),Modal.triggerId(),Popover.triggerId(),SwipeableDrawer.triggerId().Autocomplete.shinyInput()now validates its arguments and warns on conflictingrenderInput/inputProps/ child element combinations.new vignettes and gallery examples; the
mui-template-dashboardexample is available as a live deployment on Posit Connect.
Documentation
- per-component reference pages and runnable
@examplesIf interactive()blocks added to the headline components (Button.shinyInput,TextField.shinyInput,Slider.shinyInput,Autocomplete.shinyInput,Dialog.triggerId,Drawer.triggerId,ThemeProvider,muiMaterialPage). - new “AI-Assisted Development” and per-component vignettes.
Packaging
- bundle and metadata updated for an initial CRAN release:
- MUI Inc. and the Emotion team added to
Authors@Ras copyright holders of the bundled JavaScript. - new top-level
LICENSE.notedocumenting third-party MIT-licensed code shipped ininst/www/muiMaterial/. - README now states that
muiMaterialis an independent community wrapper, not affiliated with or endorsed by MUI Inc.
- MUI Inc. and the Emotion team added to
- minimum R version bumped to R (>= 4.1) to match
shiny.reactand modern Shiny. -
@mui/materialupdated to 9.0.0;@mui/labtracks the upstream 9.0.0-beta.2 release (Material UI Lab is published as a beta channel upstream — see https://mui.com/material-ui/about-the-lab/).
Internal
- improved JS bundling pipeline (webpack 5, exact-version pins, automatic third-party license extraction via
license-webpack-plugin). -
muiMaterialS3 class with aprint()method now applied to all components for browsable preview in the R console. - substantial internal refactor of
R/components.R,R/inputs.Rand the Material UI Lab components.
muiMaterial 0.1.3
CRAN release: 2026-03-15
- BREAKING CHANGE in
muiMaterialPage():- remove
materialSymbolsargument. - add new arguments to access Google Material Icons for use with
Icon(). - rename
addFontRobototouseFontRoboto.
- remove
- add
triggerIdfunctions for managing React internal states:Drawer.triggerId(),Menu.triggerId(),SwipeableDrawer.triggerId(). - add
muiMaterialS3 class to all components with aprint()method for browsable preview. - fix Timeline components sourced from
@mui/lab. - fix Tab components (
TabContext,TabList,TabPanel) sourced from@mui/lab. - move
@mui/labcomponent code fromlab.Rintocomponents.Randinputs.R. - update
mui-template-dashboardexample to use new R functions. - add live Shiny app examples deployed on Posit Connect.
- refactor tests to use
inherits()instead ofclass()for shiny.tag checks. - Update @mui/material and @mui/lab dependencies to their latest version
- improve documentation
muiMaterial 0.1.2
CRAN release: 2026-01-26
- improve examples
-
muiMaterialPage()gives access to Google icons (symbols) and Roboto font. - export
muiMaterialDependency() - improve internal file structure for ThemeProvider and muiMaterialDependency.
