Code change:
bindActionCreators({ submitProfileUI }, dispatch); const propTypes = { <del> isLocked: PropTypes.bool, showAbout: PropTypes.bool, showCerts: PropTypes.bool, showDonation: PropTypes.bool, showHeatMap: PropTypes.bool, showLocation: PropTypes.bool, showName: PropTypes.bool, showPoints: PropTypes.bool, showPortfolio: PropTypes.bool, showTimeLine: PropTypes.bool, </del> submitProfileUI: PropTypes.func.isRequired, <del> user: PropTypes.object </del> <ins> user: PropTypes.shape({ profileUI: PropTypes.shape({ isLocked: PropTypes.bool, showAbout: PropTypes.bool, showCerts: PropTypes.bool, showDonation: PropTypes.bool, showHeatMap: PropTypes.bool, showLocation: PropTypes.bool, showName: PropTypes.bool, showPoints: PropTypes.bool, showPortfolio: PropTypes.bool, showTimeLine: PropTypes.bool }), username: PropTypes.String }) </ins> }; class PrivacySettings extends Component { <del> constructor(props) { super(props); const originalProfileUI = { ...props.user.profileUI }; this.state = { privacyValues: { ...originalProfileUI }, originalProfileUI: { ...originalProfileUI } }; } componentDidUpdate() { const { profileUI: currentPropsProfileUI } = this.props.user; const { originalProfileUI } = this.state; if (!isEqual(originalProfileUI, currentPropsProfileUI)) { /* eslint-disable-next-line react/no-did-update-set-state */ return this.setState(state => ({ ...state, originalProfileUI: { ...currentPropsProfileUI }, privacyValues: { ...currentPropsProfileUI } })); } return null; } </del> handleSubmit = e => e.preventDefault(); <del> toggleFlag = flag => () => this.setState( state => ({ privacyValues: { ...state.privacyValues, [flag]: !state.privacyValues[flag] } }), () => this.props.submitProfileUI(this.state.privacyValues) ); </del> <ins> toggleFlag = flag => () => { const privacyValues = { ...this.props.user.profileUI }; privacyValues[flag] = !privacyValues[flag]; this.props.submitProfileUI(privacyValues); }; </ins> render() { <del> const { privacyValues: { isLocked = true, showAbout = false, showCerts = false, showDonation = false, showHeatMap = false, showLocation = false, showName = false, showPoints = false, showPortfolio = false, showTimeLine = false } } = this.state; </del> const { user } = this.props; <ins> const { isLocked = true, showAbout = false, showCerts = false, showDonation = false, showHeatMap = false, showLocation = false, showName = false, showPoints = false, showPortfolio = false, showTimeLine = false } = user.profileUI; </ins> return ( <div className='privacy-settings'>

Related discussion:
text: to your profile settings page the privacy setting to the top and click The privacy setting you changed will not have taken effect. From there, you can go back to the settings using the settings button, and the privacy setting will still show it as it was before you changed it. I believe this is due to using to navigate to the portfolio. The setting will have actually changed in the DB, but the effects won't show until you do a hard reload.
I can fix this if it's decided to change it.
As far as I can see, the problem is that the user is only pulled from the server once. The server is getting updated correctly, but the redux store isn't being asked to mirror these changes.
as there seems to be an issue with a redux reducer.
I was speaking to earlier and he says:
Is someone looking into this ( Otherwise I can take a crack at it tomorrow.
Go for it - let me know if you want to team up on it.