Snap! 5 is here

Welcome to the next level of Snap!

Snap! is now a community website where you can share and publish projects so others can find and remix them, and where you can ask questions and discuss the beauty and joy of computing. We invite you to check out the new site. Did you know that you can embed Snap! projects in other web pages?

We've also enhanced the programming language, making it easier to discover and to use powerful blocks for analyzing data and transforming media.


Over the next days and weeks we'll be sharing more informations about new concepts, activities and features to explore here. For now here's a first overview of what's new in Snap! 5:

  • New Features:
    • the "tools" library has been integrated as primitives
    • export 1- /2- dimensional lists with atomic data as CSV
    • export n-dimensional lists with atomic data as JSON
    • import CSV, Text, or JSON via drag & drop
    • option to import CSV etc. as "raw data", i.e. unparsed
    • parse JSON using the SPLIT reporter
    • new "aspect AT location" reporter in Sensing category for sniffing colors and sprites
    • new blocks for setting and changing the stage's background color
    • new "microphone" reporter in Sensing for getting volume, note, pitch signals and frequencies
    • new experimental live audio-scripting support
    • new video capturing and video-motion detection support, thanks, Josep!
    • new "object" reporter in the Sensing category for getting a sprite by its name
    • blocks for changing and querying the "flat line ends" setting
    • selectors for changing and querying "draggable" and "rotation style" settings
    • new sound + music "volume" feature + blocks
    • new sound + music stereo "panning" feature + blocks
    • new sound attribute getter reporter
    • new "play sound at sample rate" command
    • accept lists and lists of lists as inputs to all sound primitives
    • new "play frequency" commands in the Sounds category
    • pixel access primitives for bitmap and vector (!) graphics
    • new "stretch" primitive for costumes, also for flipping
    • new "get graphic effect" reporter
    • new "get pen attribute" reporter
    • new "pen down?" predicate
    • new "shown?" predicate
    • new "write" command in pen category (used to be "label" in tools)
    • new "numbers", "is empty", "map","keep", "find", "combine" and "for each" primitives in list category
    • 2 optional formal inputs for rings in MAP, KEEP, FIND, COMBINE: index and source list
    • new JIT-compiler "blitz-HOF" primitives for "map", "keep", "find" & "combine" via "compile"
    • new "for" loop and "if then else" reporter primitives in the Control category
    • added "neg", "lg" (log2) and "2^" selectors to monadic function reporter in Operators
    • added "^" reporter (power of) in the Operators category
    • added "width" and "height" to the MY blocks dropdown
    • added "width" and "height" as attribute selectors of the OF primitive
    • added "costume" selector to the MY attributes dropdown
    • added plus (+) and minus (-) keys to sensing and key hat
    • special context-aware drop-downs for custom blocks
    • new "stick to" submenu in the sprite context menu where applicable
    • multi-line and monospaced "code" input slots for custom blocks
    • new "string" library, thanks, Brian
    • new "text costumes" library for generating costumes from letters or words of text
    • new "World Map" extension and library for interactive maps
    • graphic effects and sound attributes can now be animated with easing functions
    • enhanced support for embedding Snap in other website, thanks, Bernat!
    • export sounds
  • Notable Changes:
    • added third hsv dimension to pen colors, changed SET and CHANGE pen blocks
    • added transparency (alpha) to pen colors
    • new drop-down options for sprite-layer control ("GO TO front/back")
    • "loop arrow" symbol for primitive loops, also available for custom blocks
    • optimized in-project storage of atomic-data lists (more efficient, less space)
    • remove all temporary clones when the Green Flag is clicked
    • adjust bottom of STOP block to reflect the menu selection (show / hide bottom notch)
    • enable dropping commands into all rings
    • colors in the vector editor are now named "Edge color" and "Fill color", thanks, Brian!
    • renamed "whitespace" option in SPLIT to "word"
    • made the "name" attribute programmatically settable
    • made the "temporary?" attibute readyble
    • deprecated storing projects in the browser's localStorage
    • deprecated some (useless) graphic effects
    • additional "publish / unpublish" buttons in the project dialog
    • buttons for saving & loading projects to disk in the project dialog
    • more language options for the Text2Speech library, thanks Joan!
  • Notable Fixes:
    • predicates inside generic WHEN hat blocks can now pass upvars
    • eliminated "clicks" when playing music notes
    • "relabel" blocks with translated drop-down choices
    • transforming arrayed to linked lists without loosing the last element
    • using "inherit" no longer un-hides the palette in presentation mode
    • relabelling custom blocks with empty numerical input slots no longer fills in zeroes
    • the language menu now has a "globe" icon (so it can be found in any language)
    • accept a number as input for a sound - interpret as index
    • fixed many costume sizes, thanks, Brian!
  • Translation Updates:
    • Chinese, thanks, Simon!
    • Turkish, thanks, Turgut!
    • Indonesian, thanks, Emanuella!
    • Greek, thanks, Alexandros!
    • Catalan, thanks, Joan!
    • Portuguese, thanks, Manuel!
    • Spanish
    • German
    • French

Hi Jens and the Team,
Thanks a lot for this monumental release for SNAP! and all the features.
SNAP is definitely the premier block development environment.
Looking forward to the family upgrades in S4A etc to round out the entire suite.


Congratulations Jens and all your collaborators!

1 Like

Thanks, Richard, great to see you here!

Amazing! Good work everyone! Great update.


Hello! My name is Bernhard and I am a complete newby. Sorry for probably asking dumb questions.
I am very grateful for SNAP - it is a wonderful program that helps non-programmers like me to set up things with reasonable effort - thanks!

I invested many hours in programming a mindopeners game and finished on the 23rd of june. Because I hoped to be independent of internet connection problems I saved the last versions in the browser.
Checking today I no longer find the option to open from the browser.
I interpret the sentence "deprecated storing projects in the browser's localStorage" that this is on purpose.
I think I understand that saving it as an xml file is the new and probably better option.
Is there a way to recover what I have saved in the browser?
thanks bernhard

Hi Bernhard. You can recover projects that you've previously stored in "in the browser" even though that option has been deprecated by pressing the shift-key and holding it down while clicking on the "open" menu item. Then you'll get the additional option "browser" again where your projects still will be loadable. Please let us know if that helps.

Hi Jens, thanks a ton, everything there ... thank you also for the quick response!
I saved it on the cloud and on the computer now ...

Btw, is there a possibility to show somebody my program to check it for improvements? I am happy to pay for it of course
thanks you Bernhard

1 Like

wow. just wow. Thanks!

There's a "help with Snap!" category here in the forum. Publish your project and post the link there. No guarantees, but we're a friendly bunch. It'll help if you can ask specific questions: "Is there a better way for me to... in my FOO block?" rather than just "how could this be better?"

News to me. I thought we were going to show the browser button to anyone who in fact has projects stored in browser store. This way isn't very discoverable.

That's not up to us, of course. Each extension developer has to deal with it, and some extensions are more currently maintained than others.

On our list of features for some day is a way to automate differential extensions, so when a new Snap! appears, the extension just works, unless there's a git conflict, in which case the relevant people are automatically notified. But of course it would then take a big effort for extension writers to fit their extensions into that new system.

LOL "no guarantees"

I mean, it isn't anyone's job to review users' projects, but so far people who've asked for help have gotten it, afaik. But if/when the forum really takes off and the Help category gets a hundred-post backup, it'll mostly have to be users helping users, because our (mostly unpaid) staff won't be able to keep up.

Unless someone reading this has a source of funding they'd like us to know about :money_mouth_face:

I have a lot of experience in online community moderation and will be thrilled to help!

i had the volume up when i loaded the project so the jump sound almost gave me a heart attack and also my ears hurt

well, sorry :wink: the volume wasn't mean to injure you, but I'm fully expecting that finding out how that nasty sound is made must delight you...

isn't it a pulse wave or something related to that?

the point is that that sound is coded in Snap and not an imported recording