Want to be on the bleeding edge? The Beta channel contains new features and bug fixes before they land on the stable channel. It is intended for developers and early adopters. Keep your current Atom configuration when using Atom Beta. New Beta releases are available regularly and installed automatically.
At GitHub, we're building the text editor we've always wanted. A tool you can customize to do anything, but also use productively on the first day without ever touching a config file. Atom is modern, approachable, and hackable to the core. We can't wait to see what you build with it.
Note: You can download the latest stable version of Atom here.
Taking the web native
Atom is a desktop application based on web technologies. Like other desktop apps, it has its own icon in the dock, native menus and dialogs, and full access to the file system.
Node.js support makes it trivial to access the file system, spawn subprocesses, and even start servers directly from within your editor. Need a library? Choose from over 50 thousand in Node's package repository. Need to call into C or C++? That's possible, too.
Atom is composed of over 50 open-source packages that integrate around a minimal core. Our goal is a deeply extensible system that blurs the distinction between "user" and "developer".
Don't like some part of Atom? Replace it with your own package, then upload it to the central repository on atom.io so everyone else can use it too.
Full-featured, right out of the box
No one wants to waste time configuring their editor before they can start using it. Atom comes loaded with the features you've come to expect from a modern text editor. Here are a few of them:
- File system browser
- Fuzzy finder for quickly opening files
- Fast project-wide search and replace
- Multiple cursors and selections
- Multiple panes
- Code folding
- A clean preferences UI
- Import TextMate grammars and themes
- Added experimental file system watcher support.
- Improved support for git worktrees.
- Updated fuzzaldrin-plus across a few packages to get better fuzzy path searching.
- Improved file rename detection in the watchPath API.
- Initial support for a new Atom project file format.
- Package authors can now control the order of context menu items.
- Chromium 56's "system-ui" generic font family is now used to load platform-specific system fonts.
- Atom's .deb package dependencies have been expanded to enable installation inside headless environments.
- Fixed crashes caused by missing USERNAME/USER environment variables.
- atom --wait now works correctly with Windows file paths.
- User interface polish around typing, scroll wheel scaling, and editor text rendering.
- Fixed an issue where panes sometimes do not fill available space.
- atom/atom#16701 - add configurable: true to browserwindow.loadSettingsJSON
- atom/atom#15080 - Replace font stack with Chromium 56's "system-ui" generic font family
- atom/atom#16124 - Back filesystem watchers with @atom/watcher
- atom/atom#16738 - Fix difference in CRLF line ending handling between tree-sitter and text-buffer
- atom/atom#16742 - Prefer package name from metadata
- atom/atom#16744 - Shim two private APIs on TreeSitterLanguageMode
- atom/atom#16745 - Normalize command line paths with windows drive letters
- atom/atom#16754 - Only return overridden language ids in .getGrammarOverride
- atom/atom#15831 - Handle edits that scroll up due to hiding the horizontal scrollbar
- atom/atom#16756 - Fix incorrect variable name
- atom/atom#16748 - return value of sync confirm function
- atom/atom#16753 - Stop scaling up small scroll wheel events
- atom/atom#16765 - Fix path duplication after decaffeinating main process code
- atom/atom#16775 - Update fuzzaldrin-plus to 0.6.0 in all packages
- atom/atom#16780 - Just say no to infinite loops
- atom/atom#16768 - Update @atom/watcher
- atom/atom#16797 - Tweak config APIs for dealing w/ legacy scope aliases
- atom/atom#16799 - :arrow_up: git-utils
- atom/atom#16809 - Serialize settings as JSON when sending them to the main process
- atom/atom#16810 - Don't try to write config file while quitting
- atom/atom#16814 - Provide a default scope descriptor if language mode doesn't provide them
- atom/atom#16661 - Enable packages to control order of context menu items
- atom/atom#16823 - Handle empty username
- atom/atom#16827 - Convert PaneContainerElement and PaneElement to JS
- atom/atom#16791 - Add StartupWMClass to .desktop for easier window-app association
- atom/atom#16852 - Avoid calling fs.realpath on editors without a path
- atom/atom#16851 - Test .oldPath and .path on rename events
- atom/atom#16859 - Add 'await' keyword at async function call and remove unnecessary parameter
- atom/atom#16668 - Optimize process kill by pid
- atom/atom#16876 - Use native isArray, endsWith
- atom/atom#16812 - Add additional dependencies for linux
- atom/atom#16863 - Fix dock dragging and dropping
- atom/atom#16884 - Randomize fontSize and lineHeight in the random test
- atom/atom#16886 - Fix shaking editor when typing
- atom/atom#16428 - Resize pane
- atom/atom#16921 - Update languages
- atom/atom#16922 - Fix regression where config file was loaded in specs
- atom/atom#16845 - Add the concept of an atomproject file to atom.
- atom/atom#16926 - Remove extra hyphen in option description
- atom/atom#16942 - Fix snapshot creation after spell-check upgrade
- atom/atom#16944 - Recognize .tsx source as Typescript