
Product
Socket for Jira Is Now Available
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.
react-swipeable-button
Advanced tools

Changes:
1.6.5
1.6.3 Fixes
Improvements
circle prop is now true by defaultv1.6.2
Improvements
Shimmer Effect enhancement: Enhanced the visibility of the shimmer effectFixes
Check all the changes in the Release Notes
npm install react-swipeable-button
or
yarn add react-swipeable-button
import { SwipeableButton } from "react-swipeable-button";
function App() {
const onSuccess = () => {
console.log("Successfully Swiped!");
};
const onFailure = () => {
console.log("Failed to Swipe!");
};
return (
<SwipeableButton
onSuccess={onSuccess}
onFailure={onFailure}
noAnimate={false} //default is false
text="Swipe me!"
text_unlocked="yeee"
sliderTextColor="#fff" //default is #fff
sliderIconColor="#fff" //default is #fff
background_color="#eee" //default is #eee
...otherProps (check props section for more details)
name="react-swipeable-button"
/>
);
}
export default App;
<SwipeableButton
onSuccess={onSuccess}
onFailure={onFailure}
buttonChildren={
<p style={{ color: "green", textAlign: "center" }}>Click me</p> // instead of text
}
buttonChildrenUnlocked={
<p style={{ color: "red", textAlign: "center" }}>Unlocked!</p> // using instead of text_unlocked
}
sliderColor="#16362d"
sliderTextColor="#fff"
sliderIconColor="#fff"
background_color="#eee"
borderRadius={30}
circle //default is true
autoWidth
disabled={false}
name="react-swipeable-button"
/>
buttonReset and buttonComplete methodsimport { useRef } from "react";
import { SwipeableButton } from "react-swipeable-button";
function App() {
const swipeableButtonRef = useRef<SwipeableButton | null>(null); // Create a ref for the component
const handleReset = () => {
swipeableButtonRef.current?.buttonReset(); // Call the reset method
};
const handleComplete = () => {
swipeableButtonRef.current?.buttonComplete(); // Call the complete method
};
return (
<SwipeableButton
text="Swipe me!"
text_unlocked="yeee"
color="16362d"
sliderTextColor="#fff"
sliderIconColor="#fff"
background_color="#eee"
circle
name="react-swipeable-button"
ref={swipeableButtonRef} // Expose the ref to the component
/>
//example usage of the reset and complete methods
<button onClick={handleReset}>Reset</button>
<button onClick={handleComplete}>Complete</button>
</div>
);
}
export default App;
<SwipeableButton
text="A long text that doesn't fit in the middle" //long text
width={500} // increase the width (default is 300)
...otherProps
/>
buttonChildren and buttonChildrenUnlocked props can be an alternative too though it needs more work ; check props section for more details| Prop | Type | Default | Description |
|---|---|---|---|
| name | String | "react-swipeable-button" | Unique ID, in case of using several components on one page |
| buttonChildren | ReactNode | None | We can pass any react component as children to the button instead of text |
| buttonChildrenUnlocked | ReactNode | None | We can pass any react component as children to the button instead of text_unlocked when the button is unlocked (buttonChildren is mandatory when buttonChildrenUnlocked is passed) |
| text | String | "SWIPE" | The text that will be displayed on the swipe button (will be overridden by buttonChildren) |
| text_unlocked | String | "UNLOCKED!" | The text that will displayed if swiping is successful (will be overridden by buttonChildrenUnlocked) |
| color (Depricated) | String | "#333" | Depricated, use sliderColor instead |
| sliderColor | String | "#16362d" | The color of the slider |
| sliderTextColor | String | "#fff" | The color of the Slider Text |
| textColor | String | "#000" | The color of the Text (without slider) |
| sliderIconColor | String | "#fff" | The color of the icon |
| background_color | String | "#eee" | The background color of the container |
| borderRadius | Number | 30 | The border radius of the container lets you control the roundness of the corners (ignored if circle is false) |
| noAnimate | Boolean | false | Disable animation |
| width | Number | 300 | Width of element (ignored if autoWidth is true) |
| height | Number | 50 | Height of element |
| autoWidth | Boolean | false | takes 100% width of parent div |
| circle | Boolean | true | All parts of component will be with border-radius and rounded handler |
| disabled | Boolean | false | Disable interaction with component |
| onSuccess | Function (optional) | null | The function that will be called when a swipe is successful |
| onFailure | Function (optional) | null | The function that will be called when a swipe is failed |
Contributing on this project is always welcome! Just fork, update, push to your respective branch and make a pull request after testing. Make sure to open an issue before contribute.
MIT © Abdur Rahman
FAQs
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.