Releases: enzomanuelmangano/pressto
Release 0.7.0
pressto 0.7.0
Per-component control over global handlers, analytics-friendly metadata, a standard disabled prop, and e2e-ready accessibility identifiers. Fully backward compatible (semver-minor) — existing code runs unchanged.
npm i pressto@0.7.0New
disabled prop — the standard React Native convention. enabled still works but is now deprecated. (closes #22)
<PressableScale disabled onPress={onPress} />Per-component metadata in handlers — metadata now reaches onPress / onPressIn / onPressOut, including the PressablesConfig globalHandlers. A global handler can finally tell which pressable fired (analytics name, flags, etc.) without repeating logic per component. A component's metadata overrides the config-level one. (closes #26)
<PressablesConfig
globalHandlers={{ onPress: ({ metadata }) => track('tap', metadata?.name) }}
>
<PressableScale metadata={{ name: 'checkout' }} />
<PressableScale metadata={{ name: 'cancel' }} />
</PressablesConfig>skipGlobalHandlers prop — opt a single pressable out of the global handlers while its own onPress still fires. No more nested PressablesConfig hack to mute, e.g., global haptics on one button. (closes #30)
<PressableScale skipGlobalHandlers onPress={onPress} />testID → native accessibilityIdentifier — RNGH's BaseButton accepts testID but doesn't propagate it to the native view, so e2e runners (Maestro, XCUITest, Detox) couldn't locate pressto buttons. pressto now mirrors React Native's convention: testID becomes the native accessibilityIdentifier, and pressables are accessibility elements by default. Both are overridable via accessibilityIdentifier and accessible. (#33)
Internal
- Unit test suite added with
@testing-library/react-native. - Releases now publish from CI via npm OIDC Trusted Publishing — no
NPM_TOKEN, provenance-signed, behind a manual-approval gate. (#35)
Verified
The new behavior was validated on real devices (iOS + Android, SDK 56): metadata reaching global handlers, skipGlobalHandlers suppression, and the themed metadata path (no regression).
Full Changelog: v0.6.1...v0.7.0
Release 0.7.0-beta.1
0.7.0-beta.1 (2026-06-08)
Release 0.7.0-beta.0
Release 0.6.1
0.6.1 (2026-02-12)
Features
This allows setting default props for all pressables globally, useful for platform-specific behavior like disabling the Android ripple effect:
<PressablesConfig defaultProps={{ rippleColor: 'transparent' }}>
{/* All pressables will have ripple disabled */}
</PressablesConfig>Release 0.6.0
0.6.0 (2025-10-18)
Features
- activate on hover (web only) (#16) (7563ea8)
- allow changing pressable defaults (#17) (2d4f2f2)
- pressto eslint plugin (#15) (3b7208e)
- support children as a callback (#18) (dc21975)
Breaking changes v0.5.1 → v0.6.0
PressablesConfig prop renamed: config → animationConfig
<PressablesConfig
- config={{ damping: 30, stiffness: 200 }}
+ animationConfig={{ damping: 30, stiffness: 200 }}
>Release 0.5.1
Release 0.5.0
0.5.0 (2025-10-14)
Features
- add advanced interaction states and theme metadata support to animated pressables (dc6212b)
- add initialToggled prop to PressableToggle for default toggled state (b4180ea)
- add theme metadata example and new navigation button (9c657f6)
- enhance Pressable components with detailed interaction options and logging (37ac0b0)
- enhance PressableToggle with isPressed, isFocused states and update example text (3dd8ef7)
- isFocused -> isSelected (b5e0bb7)
- support isToggled & lastItemTouched (9ce4b24)
- support toggled (9583cce)
Upgrading from 0.3.x to 0.5.x
Breaking Change: The progress parameter is now a plain number instead of SharedValue<number>.
const MyPressable = createAnimatedPressable((progress) => {
'worklet';
return {
- opacity: progress.get() * 0.5,
+ opacity: progress * 0.5,
- scale: interpolate(progress.get(), [0, 1], [1, 0.95]),
+ scale: interpolate(progress, [0, 1], [1, 0.95]),
};
});What to do: Remove all .get() / .value calls on the progress parameter.
Release v0.3.1
Full Changelog: v0.3.0...v0.3.1