Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


The new programming language for web apps

Subscribe to updates I use imba

Statistics on imba

Number of watchers on Github 1941
Number of open issues 25
Average time to close an issue 26 days
Main language JavaScript
Average time to merge a PR 1 day
Open pull requests 2+
Closed pull requests 1+
Last commit over 1 year ago
Repo Created over 5 years ago
Repo Last Updated over 1 year ago
Size 14.6 MB
Organization / Authorsomebee
Latest Release1.1.1
Page Updated
Do you use imba? Leave a review!
View open issues (25)
View imba activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating imba for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)


Join the chat at

if ruby and react had an indentation-based child, what would it look like? Imba is a new programming language for the web that compiles to performant and readable JavaScript. It has language level support for defining, extending, subclassing, instantiating and rendering dom nodes.


To get started with Imba, we recommend reading through the official guide. If you just want to get going, clone hello-world-imba and follow the readme.


For questions and support please use our community chat.


  • Atom: language-imba can be installed through Atom Package Manager. File icon support is available via the File Icons package and the code pending in this issue until integrated with the base package.
  • Sublime Text: sublime-imba can be installed through Sublime Package Manager.
  • VSCode: vscode-imba can be installed through VSCode / Marketplace.


Get Node.js and npm, or Yarn, then:

  • npm install -g imba
  • yarn add --global imba



Imba ships with a basic node wrapper for running imba-scripts. Use imba the same way you would use node. Call imba without arguments to see available options.

imba app.imba will compile and execute app.imba


The imbapack utility is a convenient wrapper around webpack, which preprocesses your config to include the necessary configurations for loading .imba files. It supports all the same options as webpack and will work with webpack.config.js files directly. When you use imbapack you do not need to declare an imba-loader and resolveExtensions in your configs.

imbapack app.imba bundle.js compiles the file app.imba, and all required files into a webpack bundle named bundle.js. This file can be included in a html page like any other js-file. See webpack for more details.

imbapack --watch app.imba bundle.js same as above, but recompiles whenever app.imba or any related files change.

Webpack Config

The following should be sufficient in most cases:

  test: /\.imba$/,
  loader: 'imba/loader'


The imbac utility is for compiling your scripts to js. When working on client-side projects you should rather use imbapack (see above). Call imbac without arguments to see available options. If you are not able to use imba to run your project, or you really need to precompile the code (for running on node), you can use imbac.



imba open issues Ask a question     (View All Issues)
  • about 3 years Logo
  • over 3 years .imba require extension doesn't work
  • over 3 years The right way for rerender changed attrs/props
  • over 3 years The old site had language syntax documentation that is missing on the new site.
  • over 3 years require "imba" does not behave as expected
  • over 3 years --standalone does not appear to work
  • over 3 years Javascript object declaration syntax
  • over 3 years Form Submit triggers 'click' on all buttons
  • almost 4 years Allow binding to img/script/iframe onload event
  • almost 4 years Loops returning arrays of strings does not work
  • almost 4 years Add syntax for anonymous *unbound* functions
  • almost 4 years a new benchmark
  • almost 4 years Emacs mode / support
  • almost 4 years Allow calling regular methods inside < tag >
  • almost 4 years Concerns separation
  • almost 4 years Add tag hooks for mount / unmount
  • almost 4 years Remove chokidar dependency
  • almost 4 years Support for instantiating tags with dynamic name/type
  • almost 4 years Docs: Property access
  • almost 4 years Docs: Implicit self
  • almost 4 years Docs: Tag rendering
  • almost 4 years Problem with preventing click event
  • almost 4 years Get imba registered as a language on GitHub
  • about 4 years redundant coma between last argument and `do`
  • about 4 years Support stdin and stdout in CLI
  • over 4 years Imba todomvc benchmark is cheating :(
  • over 4 years Support for generators?
  • over 2 years Test framework?
  • over 2 years Amazing IMBA
  • almost 3 years Hook into node injection/alter
imba open pull requests (View All Pulls)
  • Add trailing semicolon to IIFE wrapper
  • Reconcile text nodes
imba list of languages used
imba latest release notes
1.3.0-beta.1 1.3.0 Prerelease

Lots of exciting things coming in Imba 1.3.

Event modifiers

Inspired by Vue, we have now added support for event modifiers, which makes it much easier to decouple your actions from the events triggering them. The modifiers supported thus far are;

  • .stop
  • .prevent
  • .bubble
  • .silent
  • .self

We also added support for keydown/keyup modifiers:

  • .enter
  • .left
  • .right
  • .up
  • .down
  • .space
  • .tab
  • .esc

And mouse modifiers

  • .left
  • .middle
  • .right

Proper documentation will follow when we move towards final release.

Form Input Bindings

Also inspired by Vue, we're adding basic support for binding form input values to the data, using the 'model' property on the input. It currently has most of the same functionality provided in Vue, so until we have docs in place you can learn about it in their guide :)


  • Add support for event modifiers (e.g. <div :keydown.enter.halt=...>)
  • Add support for form input bindings (e.g. <input[data] model='myField'>)
  • Allow all attributes on svg elements
  • Remove deprecated selector-syntax
  • Remove deprecated methods on Imba.Tag (object,width,height,append,prepend,style,setStyle)
  • Remove deprecated methods on Imba.Event (keychar,keycombo,source)
  • Remove deprecated Imba.isClient and Imba.isServer
  • Improve performance of setText
  • Improve performance of non-keyed tag lists
  • 30% smaller library (now 53k minified, 14k gzipped)
1.1.1 1.1.1


  • Make imbapack input.imba output.js work without a config
1.1.0 1.1.0


  • Introduce module keyword for singleton classes
  • Allow aliasing imports with import x as y from ...
  • Always escape attributes textContent when rendering on server
Other projects in JavaScript