bony2023/react-terminal
bony2023/react-terminal has 376 GitHub stars and 68 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 13:59 UTC. Last push 2025-05-02.
🚀 React component that renders a Terminal 🖥
What you can do
- Mobile support. 📱
- Customizable commands, prompt and error message. ✅
- Support callbacks(async/non-async) for commands. 🔄
- Command history using arrow up and down. 🔼
Measured star growth
- in 24h
- 0
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original🚀 React component that renders a Terminal 🖥
Features • Installation • Usage • Props • Report a bug

Looking for Sponsors/Contributors
While my time is restricted, I'm still committed to this library. To help focus development, sponsorship is appreciated for urgent feature requests. I strongly encourage community contributions through pull requests. Feel free to submit them for any issues or new features, and I'll be happy to review them. Thank you!
Features
- Mobile support. 📱
- Customizable commands, prompt and error message. ✅
- Support callbacks(async/non-async) for commands. 🔄
- Command history using arrow up and down. 🔼
- Support for copy/paste. 📋
- In-built themes and support to create more. 🚀
Installation
Install package with NPM or YARN and add it to your development dependencies:
npm install react-terminal
OR
yarn add react-terminal
Usage
import { ReactTerminal } from "react-terminal";
function App(props) {
// Define commands here
const commands = {
whoami: "jackharper",
cd: (directory) => `changed path to ${directory}`
};
return (
<ReactTerminal
commands={commands}
/>
);
}
Also make sure to wrap the main mountpoint around the TerminalContextProvider. This retains the state even when the component is unmounted and then mounted back:
import { TerminalContextProvider } from "react-terminal";
ReactDOM.render(
<TerminalContextProvider>
<App/>
</TerminalContextProvider>,
rootElement
);
Creating custom themes
The component comes with few in-built themes: light, dark, material-light, material-dark, material-ocean, matrix and dracula. You can also create custom themes by passing themes parameter in props, as follows:
<ReactTerminal
commands={commands}
themes={{
"my-custom-theme": {
themeBGColor: "#272B36",
themeToolbarColor: "#DBDBDB",
themeColor: "#FFFEFC",
themePromptColor: "#a917a8"
}
}}
theme="my-custom-theme"
/>
Props
| name | description | default |
|---|---|---|
welcomeMessage |
A welcome message to show at the start, before the prompt begins. Value can be either a string or JSX | null |
prompt |
Terminal prompt | >>> |
commands |
List of commands to be provided as a key value pair where value can be either a string, JSX/HTML tag or callback | null |
errorMessage |
Message to show when unidentified command executed, can be either a string, JSX/HTML tag or callback | "not found!" |
enableInput |
Whether to enable user input | true |
showControlBar |
Whether to show the top control bar | true |
showControlButtons |
Whether to show the control buttons at the top bar of the terminal | true |
theme |
Theme of the terminal | "light" |
themes |
Themes object to supply custom themes | null |
defaultHandler |
Default handler to be used (if provided) when no commands match. Useful when you don't know list of commands beforehand/want to send them to server for handling. | null |
In-built commands
| command | description |
|---|---|
| clear | clears the console |
Report a bug
If you found a bug in this library, please file an GitHub issue here.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,357 starspublic-apis/public-apis
A collective list of free APIs
497,608 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
446,942 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,254 stars