SmallJS

Description

Smalltalk development in your browser and Node.js

Details

Source
GitHub
License
MIT
Stars
189
Forks
8
Created
Aug. 20, 2023
Updated
March 31, 2026
Topics
javascript node-js nodejs object-oriented-programming smalltalk smalltalk-language smalltalk-virtual-machine typescript webdevelopment

Categories

IDE / Dev Tools

README excerpt

# SmallJS README

<p align="center" width="100%" style="font-size: large; font-weight: bold;">
	<img src="Documentation/SmallJS.png" alt="SmallJS logo" width="300" height="300"/>
	<br>
	<label>Official website: </label>
	<a href="https://small-js.org" style="font-weight: bold;">small-js.org</a>
</p>

## News - PWA example added - 21-MAR-2026

PWA example game added: Emoji Memory :-).\
Showcasing how to make a PWA with SmallJS.

## News - SmallJS 2.0 released! - 21-FEB-2026

[SmallJS 2.0](https://small-js.org/News) now has full support for async, await and promises!\
Almost all async calls classes have been converted form callbacks to promises,\
making code cleaner, more concise and easier to debug.\
Check out [Async.md](./Documentation/Language/Async.md) for usage instructions.\
For other improvements, check out the website.

The SmallJS website now has a [tutorial page](https://small-js.org/Tutorial) for learning SmallJS and Smalltalk.\
The Smalltalk language and core library classes are explained.\
Examples can be done interactively using the online [Playground](https://small-js.org/Playground) .\
(If you have any feedback on the tutorial, please create an issue in the [website repo](https://github.com/Small-JS/Website/issues) ).

The full [class reference](https://small-js.org/Reference) documentation is now also available on the website.

## Introducing SmallJS

SmallJS is a free and open source implementation of the elegant and powerful Smalltalk-80 (ST) language.\
It compiles to JavaScript (JS) that runs in modern browsers or in recent Node.js.\

SmallJS is file based, not image based, so you can develop in your favorite IDE.\
The default setup is for Visual Studio Code, with ST syntax coloring and step-debugging!\
You code separately from the SmallJS base libraries (image).\
Only the parts you use are imported automatically when running your app.

SmallJS is _fully_ object oriented, so customizable on every level.\
For usability, ST class and method names are kept mostly equal to their familiar JS counterparts.

JS libraries already encapsulated in ST are:

- Browsers: Document, Window, HTML elements, events, CSS, streams.
- Node.js: HTTP server, Express, file mgmt, 5 databases, 5 AI providers.
- Desktop apps: NWjs, Electron, NodeGui.

To get you started quickly, there are several example projects using the above.

## Code example

![Example.png](Example.png)

## Installing

To install SmallJS check out:
[Installing.md](Documentation/Installing/Installing.md)

## Examples

For a first impression of running SmallJS code, see the example projects:
[Examples.md](Examples/Examples.md)

## Playground

To get a feel for Smalltalk and to quickly test out ST expressions,
a playground is accessible though the offical website:
[small-js.org/Playground](https://small-js.org/Playground)

## Documentation

The complete SmallJS documentation, including a tutorial, is located here:
[Documentation.md](Documentation/Documentation.md)

## Contributions

Contributions to SmallJS that are not part of the main system,
but show interesting applications:
[Contributions.md](Contributions/Contributions.md)

← Back to results