- createAtom: Only call set if value changed
- createDerived: Only call set if value changed
- preact: Use correct initial value with useAtomValue
- createAtom: Remove reducers property
- CONFIG: Add globalEffects for all atoms
- createSlice: Allows creating atoms with actions and selectors
- devtools: Add logger effect to monitor atom activities
- effects: Rewrite effect dispatcher for more consistent data flow
- core: Add missing exports
- Improve jsdocs
- createAtom: Use correct types for reducers
- createAtom: Rename atom to createAtom
- createDerived: Rename derive to createDerived
- createEffect: Rename middleware to createEffect
- createSelector: Rename select to createSelector
- atom: Add reducers option to create actions
- createActions: Add createActions helper
- createSelector: Add combiner selectors
- atom: Remove promise unwrapping
- preact: Remove useDerive hooks
- react: Remove useDerive hooks
- core: Add didInit to all atom types
- core: Pass previous value when subscribing to atom or derive
- select: Create atom selector helper
- derive: Add derive setter functions
- middleware: Allow providing atom value types
- preact: Add hooks to use settable derive atoms
- preact: Allow any atom type in useAtom
- react: Add hooks to use settable derive atoms
- react: Allow any atom type in useAtom
- Restructure project as monorepo
- middleware: Allow waiting for promises returned by init and didInit
- middleware: Execute all setups before calling init action
- preact: Add preact bindings
- react: Add didInit state to useAtom hook
- devtools: Only warn once when extension was not found
- middleware: Add didInit actions
- migration: Create migration middleware
- expiration: Extract expiration middleware from localStorage
- indexedDb: Add indexedDb middleware
- localStorage: Add option for custom parsers
- atom: Add method to unwrap promises
- Improve package exports
- localStorage: Add expiration options
- Initial release 🎉