Shared state is the ability to get state from one state container and use its properties in another state container in a read-only manner. While it's not natively supported it can be accomplished.
Let's say you have 2 stores: Animals and Preferences. In your preferences store, which is backed by localstorage, you have the sort order for the Animals. You need to get the state from the preferences in order to be able to sort your animals. This is achievable with selectSnapshot.
@State<PreferencesStateModel>({ name:'preferences', defaults: { sort: [{ prop:'name', dir:'asc' }] }})@Injectable()exportclassPreferencesState { @Selector()staticgetSort(state:PreferencesStateModel) {returnstate.sort; }}@State<AnimalStateModel>({ name:'animals', defaults: [ animals: [] ]})@Injectable()exportclassAnimalState {constructor(private store:Store) {} @Action(GetAnimals)getAnimals(ctx:StateContext<AnimalStateModel>) {conststate=ctx.getState();// select the snapshot state from preferencesconstsort=this.store.selectSnapshot(PreferencesState.getSort);// do sort magic herereturnstate.sort(sort); }}