Defold 1.12.1 BETA

If you are using a custom AndroidManifest.xml or Info.plist, ensure it is kept in sync with the updated files in builtins.

It’s always recommended to use the https://build-stage.defold.com extender for beta, but in this version it is mandatory.

Disclaimer

This is a BETA release, and it might have issues that could potentially be disruptive for you and your teams workflow. Use with caution. Use of source control for your projects is strongly recommended.

Access to the beta

Download the editor or bob.jar from GitHub: Release v1.12.1 - beta · defold/defold · GitHub

Defold 1.12.1 BETA

Summary

  • NEW: (#11553) Update XCode to 26.2, MacOS SDK to 26.2, iOS SDK to 26.2 (by AGulev)
  • NEW: (#11554) Update Android SDK to version 36.1.0 and targetSdkVersion to 36 (by AGulev)
  • NEW: (#11447) Add support for http proxy connections (by britzl)
  • NEW: (#9505) Replaced the deprecated ALooper_pollAll call with ALooper_pollOnce (by AGulev)
  • NEW: (#11739) Report old and new shader combinations (by Jhonnyg)
  • NEW: (#11429) Added editor option to select when to build with the profiler (by JCash)
  • NEW: (#11577) Add support for mounting live update archives from Android assets (by britzl)
  • NEW: (#11558) Fix regex for linux shared libraries (by ekharkunov)
  • NEW: (#11164) Removed unnecessary lock of main thread when loading many large textures (by britzl)
  • NEW: (#11528) Added ‘Help’ to the list of permitted locations for editor scripts (by AGulev)
  • NEW: (#7047) Breakpoints tab view (by JosephFerano)
  • NEW: (#11600) Skip unnecessary traversal in update-overrides (by matgis)
  • NEW: (#11276) Added an ability to specify library.defold_min_version for extensions to prevent using incompatible extensions (by AGulev)
  • NEW: (#11630) Decrease editor memory pressure from transaction steps (by matgis)
  • NEW: (#11607) Add a window title to splash, welcome, and project loading (by JosephFerano)
  • NEW: (#11406) Editor: Add drag and drop from Assets to Properties Resource Picker (by JosephFerano)
  • NEW: (#4156) Move project dependencies into their own separate category in the Assets panel (by vlaaad)
  • NEW: (#8960) Added “Close” button to the animation preview in atlas (by AGulev)
  • NEW: (#11676) Add zlib module to editor scripts (by vlaaad)
  • NEW: (#11396) Do not rename items on double-click in the outline (keep only F2 for renaming) (by AGulev)
  • FIX: (#11526) Update LuaJIT (by AGulev)
  • FIX: (#11541) Performance optimisations for atlas creation (by AGulev)
  • FIX: (#11547) Bob performance optimizations for sequential builds (by AGulev)
  • FIX: (#11517) Fixed missing delete key binding on HTML5 (by britzl)
  • FIX: (#11609) Improved atlas texture creation speed in the editor (by AGulev)
  • FIX: (#11613) Unblock main thread while loading a collection and a texture at the same time (by britzl)
  • FIX: (#11624) Various leak fixes: SSL socket, physics, script table, game system, engine (by JCash)
  • FIX: (#11678) Make sure the mesh component buffer’s version is taken into account when updating the vertex buffer (by JCash)
  • FIX: (#11679) Fixes in the Vulkan graphics backend (by JCash)
  • FIX: (#10571) Dont use valueptr for models in GetProperty for material constants (by Jhonnyg)
  • FIX: (#11627) Added Safe Area related functionality (by AGulev)
  • FIX: (#11689) bob.jar now scans for ext.properties in all folders, not just extension folders (by AGulev)
  • FIX: (#11736) Fix text layout regression (by britzl)
  • FIX: (#11746) Fix Android resource detection (by ekharkunov)
  • FIX: (#11104) Copy dynamic libs into result bundle (by ekharkunov)
  • FIX: (#11349) Add logic to recover lost sound device on Windows (by deurell)
  • FIX: (#11663) Fix a rare potential ANR issue on Android (by AGulev)
  • FIX: (#11673) Fixed missing tracking when doing layout of glyphs (by JCash)
  • FIX: (#11685) Added support for .jpeg files for models (by JCash)
  • FIX: (#11683) Added check if font glyph bitmap will fit into the font glyph texture before uploading (by JCash)
  • FIX: (#9702,#9401) Fix issues around textures shared between Model Scenes (by matgis)
  • FIX: (#11568) Revamp the Properties view (by vlaaad)
  • FIX: (#11556) Fixed an issue where the camera component icon would disappear after copy-pasting a camera component (by AGulev)
  • FIX: (#11570) Improve project open performance in large projects (by vlaaad)
  • FIX: (#11601) Improve project load performance by 19% (by vlaaad)
  • FIX: (#11604) Improve project loading performance of large projects by 4% (by vlaaad)
  • FIX: (#10688) Editor: Optimize atlas preview generation (by JosephFerano)
  • FIX: (#8463) Editor: Optimize Atlas Preview Image Generation for faster iterations (by JosephFerano)
  • FIX: (#11619) Editor: Fix exception when showing Context Menu for a missing resource (by matgis)
  • FIX: (#11655) Exclude insignificant entries when applying gui property overrides in the editor (by matgis)
  • FIX: (#4959) Add an embedded sound component instead of using a raw sound (by AGulev)
  • FIX: (#8442) Select the first element by default in forms where choosing an option reveals additional settings (by vlaaad)
  • FIX: (#11532) Limit max height of editor script dialogs (by vlaaad)
  • FIX: (#11690) Add /prefs/... editor HTTP server enpoints (by vlaaad)

Engine

NEW: (#11553) ‘Update XCode to 26.2, MacOS SDK to 26.2, iOS SDK to 26.2’ by AGulev
Build toolchain updated with:

  • XCode 26.2
  • macOS SDK 26.2
  • iOS SDK 26.2

:warning: The MinimumOSVersion for iOS has been updated to 15.0 (it was 11.0 previously)
:warning: The LSMinimumSystemVersion for macOS has been updated to 11.5 (it was 10.15 previously)
:warning: info.plist notice: if your project uses a custom info.plist file, ensure it includes the latest changes from the default version

NEW: (#11554) ‘Update Android SDK to version 36.1.0 and targetSdkVersion to 36’ by AGulev
Android SDK updated to the latest stable version 36.1.0

NEW: (#11447) ‘Add support for http proxy connections’ by britzl
HTTP requests can now specify a proxy server to use when connecting to the destination server. When a proxy is used the connection to the destination server is established using an a HTTP tunnel through the proxy. The HTTP tunnel is established using the CONNECT HTTP method.

	-- connect to www.defold.com via localhost proxy on port 8888
	local url = "https://www.defold.com:443"
	local method = "GET"
	local headers = {}
	local post_data = nil
	local options = {
		proxy = "https://127.0.0.1:8888"
	}
	http.request(url, method, function(self, id, response)
		pprint(response)
	end, headers, post_data, options)

NEW: (#9505) ‘Replaced the deprecated ALooper_pollAll call with ALooper_pollOnce by AGulev
ALooper_pollAll has been deprecated due to a potential race condition. It has been replaced with ALooper_pollOnce in the engine code.

NEW: (#11739) ‘Report old and new shader combinations’ by Jhonnyg
When mixing old and new shader pipelines, we currently show a warning but don’t tell the users which shaders is causing it. Instead, we now show which shader resources that are causing this to happen.

NEW: (#11429) ‘Added editor option to select when to build with the profiler’ by JCash
This allows for the option to use the profiler in a release build.

NEW: (#11577) ‘Add support for mounting live update archives from Android assets’ by britzl
It is now possible to mount a live update archive located inside the assets folder of an Android bundle by using a specific prefix to the archive path:

liveupdate.add_mount("my_mount", "zip:/android_asset/myassets.zip", priority, callback)

The archive can be added to the Android bundle using the bundle resources option or as an install-time Play Asset Delivery pack.

NEW: (#11558) ‘Fix regex for linux shared libraries’ by ekharkunov

NEW: (#11164) ‘Removed unnecessary lock of main thread when loading many large textures’ by britzl
This change makes sure that the resource system doesn’t lock the main thread when loading many large textures (or other large resources).

FIX: (#11526) ‘Update LuaJIT’ by AGulev
This update resolves performance issues on arm64 platforms with JIT enabled, such as arm64-mac, arm64-android, and arm64-linux.

FIX: (#11541) ‘Performance optimisations for atlas creation’ by AGulev
These improvements reduced the total atlas build time in Bob.jar from ~2850ms down to ~1100ms for a tested atlas (8192x4096, 4818 images on MBP M1 Max), including a drop in layout calculation time from ~1300ms down to ~490ms. With the reduced algorithmic complexity, adding more images will affect performance far less than before.

FIX: (#11547) ‘Bob performance optimizations for sequential builds’ by AGulev
Load the native libraries used for shader, model and texture building in advance during Bob’s initialisation stage, and do it in parallel. This can save up to 2 seconds during a rebuild when all three libraries are needed. While that might not be a big deal for a full build, for sequential builds (builds without clean) it can be a noticeable improvement (for example, 4s → 2s).

FIX: (#11517) ‘Fixed missing delete key binding on HTML5’ by britzl
The delete key was not correctly identified in HTML5 builds.

FIX: (#11609) ‘Improved atlas texture creation speed in the editor’ by AGulev

FIX: (#11613) ‘Unblock main thread while loading a collection and a texture at the same time’ by britzl
This fixes an issue where the main thread locked for an extender period of time when loading and initialising a collection while at the same time doing a texture upload on Vulkan.

FIX: (#11624) ‘Various leak fixes: SSL socket, physics, script table, game system, engine’ by JCash

FIX: (#11678) ‘Make sure the mesh component buffer’s version is taken into account when updating the vertex buffer’ by JCash
This fixes an issue when setting a buffer via the “vertices” property, and the vertex buffer wasn’t updated.

FIX: (#11679) ‘Fixes in the Vulkan graphics backend’ by JCash
The issue presented itself when running with diagnostics, but could lead to odd behaviors at runtime.
The fixes:

  • an image size was occasionally miscalculated, which could result in a read out-of-bounds
  • the graphics async state was written to twice, in a non thread safe manner

FIX: (#10571) ‘Dont use valueptr for models in GetProperty for material constants’ by Jhonnyg
Fixed an issue where using go.animate to animate material constants would cause model hashes to not be updated. This would cause model instancing to behave incorrectly.

FIX: (#11627) ‘Added Safe Area related functionality’ by AGulev
Safe Area support for Android and iOS phones is now available in the engine out of the box.
You can control how the GUI respects the safe area using gui.safe_area_mode = none|long|short|both in game.project, with the option to override this per GUI scene at runtime via gui.gui.set_safe_area_mode(gui.SAFE_AREA_*).

CleanShot 2026-01-08 at 11 48 20@2x

This allows UI elements to stay within safe zones on devices with notches, while still using the full screen when no cutout is present (On platforms without cutouts, the inset values are returned as 0).
The new window.get_safe_area() API provides the current safe area rectangle along with inset values, making it possible to use this data in custom layout and positioning logic.

example

FIX: (#11689) bob.jar now scans for ext.properties in all folders, not just extension folders’ by AGulev
Fix an inconsistency where the Editor scans ext.properties in all folders, while bob.jar only scans extension folders.

FIX: (#11736) ‘Fix text layout regression’ by britzl
This fixes a regression and discrepancy between how fonts are viewed in the editor and rendered in the engine. Monospace font padding were not properly respected and trailing spaces had an incorrect length.

FIX: (#11746) ‘Fix Android resource detection’ by ekharkunov
Fixed issue when bundle resources doesn’t detected as valid Android resources because of additional .DS_Store files

FIX: (#11104) ‘Copy dynamic libs into result bundle’ by ekharkunov

FIX: (#11349) ‘Add logic to recover lost sound device on Windows’ by deurell
Handle recovery of lost sound device on Windows.

FIX: (#11663) ‘Fix a rare potential ANR issue on Android’ by AGulev
The expensive part of window termination on android was moved from the looper thread to the engine thread to prevent potential ANRs when terminating a window.

FIX: (#11673) ‘Fixed missing tracking when doing layout of glyphs’ by JCash

FIX: (#11685) ‘Added support for .jpeg files for models’ by JCash
Previously, models could only refer to .jpg or .png files.

FIX: (#11683) ‘Added check if font glyph bitmap will fit into the font glyph texture before uploading’ by JCash
This fixes an issue where blitting an image outside of the texture size is throwing errors on OpenGL backend.

Editor

NEW: (#11528) ‘Added ‘Help’ to the list of permitted locations for editor scripts’ by AGulev

NEW: (#7047) ‘Breakpoints tab view’ by JosephFerano
Breapoints Tab has been added to the Tool’s Panel which allows the user to manage all breakpoints in their project. Breakpoints also received an enhancement with the ability to toggle their enabled state, allowing users to temporarily disable them without deleting them. Breakpoints also now persistent across sessions so you don’t lose them when you close the project.

image

image

Features include:

  • Enable/Disable/Toggle/Remove All or selected with right-click context menu actions
  • Toggle breakpoint enabled state checkbox
  • Add/Edit/Remove conditions
  • Go to line or show asset in the browser
  • Keyboard shortcuts!

NEW: (#11600) ‘Skip unnecessary traversal in update-overrides’ by matgis
Skipping some graph traversal in the update-overrides step that concludes transactions is now around 14.7 times faster. In the large project we were testing with the update-overrides step during the initial project loading went from taking 1:43 to 6.8 seconds, resulting in a 27% project load time improvement.

NEW: (#11276) 'Added an ability to specify library.defold_min_version for extensions to prevent using incompatible extensions ’ by AGulev
Extensions that define library.defold_min_version are now validated against the current Defold version.
If the extension requires a newer version than the one being used, the build will fail with an error message.

NEW: (#11630) ‘Decrease editor memory pressure from transaction steps’ by matgis
Refactored the data structures we use to represent atomic changes to the editor graph. This yields a small improvement to peak memory usage when loading the project.

For comparison, in our large test project, the transaction steps needed to load the project went from 1.02 GB to 695 MB. In practice, the improvement will not be directly reflected as a corresponding decrease in peak memory usage, but the change puts less pressure on the garbage collector and enables further optimizations.

NEW: (#11607) ‘Add a window title to splash, welcome, and project loading’ by JosephFerano
Defold now has an OS window title while starting up, showing the welcome screen, and during the project loading window.

NEW: (#11406) ‘Editor: Add drag and drop from Assets to Properties Resource Picker’ by JosephFerano
Allow dragging and dropping of assets from the Asset Browser pane into a Resource Picker in the Properties pane.

NEW: (#4156) ‘Move project dependencies into their own separate category in the Assets panel’ by vlaaad
In projects with many dependencies, having them all in the main folder can be disruptive. To improve this, all dependencies are moved into a separate Dependencies folder at the same root level as the project.

1234

NEW: (#8960) ‘Added “Close” button to the animation preview in atlas’ by AGulev
It wasn’t obvious how to close the animation preview in the atlas, so a Close button was added along with a tooltip reminding users of the shortcut:

1

NEW: (#11676) ‘Add zlib module to editor scripts’ by vlaaad
Now, the editor scripts’ Lua runtime has zlib module — with the same semantics as the engine’s zlib module.

NEW: (#11396) ‘Do not rename items on double-click in the outline (keep only F2 for renaming)’ by AGulev

FIX: (#9702,#9401) ‘Fix issues around textures shared between Model Scenes’ by matgis
Texture resources shared across multiple Model Scenes (.gltf files) will now properly share VRAM resources.

FIX: (#11568) ‘Revamp the Properties view’ by vlaaad
We have now refreshed the Properties view.

It looks better than it was before; it shows the updates immediately, and its styling is now more consistent with the rest of the editor, particularly with the editor scripts UI.

FIX: (#11556) ‘Fixed an issue where the camera component icon would disappear after copy-pasting a camera component’ by AGulev

FIX: (#11570) ‘Improve project open performance in large projects’ by vlaaad
A project now opens approximately 15% faster (as measured on a large project with thousands of assets: time to open reduced from 3m36s to 3m02s on my machine).

FIX: (#11601) ‘Improve project load performance by 19%’ by vlaaad
This performance optimization improves project load performance on big projects. As measured on a large project, the load time decreased from 3:01 to 2:25, a 19% improvement.

FIX: (#11604) ‘Improve project loading performance of large projects by 4%’ by vlaaad
This change defines resource types for common file formats (binary and text) to avoid binary/text detection during project load.

FIX: (#10688) ‘Editor: Optimize atlas preview generation’ by JosephFerano
Working with Atlases now have better performance characteristics. Changes to image and animation properties that do not affect the atlas texture are now near instant, and changes to Atlas properties that do require recalculation perform faster. Finally, an error is now shown in the Scene View when texture page count exceeds 8 pages, since that is the maximum supported amount.

FIX: (#8463) ‘Editor: Optimize Atlas Preview Image Generation for faster iterations’ by JosephFerano
The time it takes to generate a new atlas preview after changing its properties was reduced significantly. It should now be around 6x faster on slower machines. As well, dragging/dropping images or moving them up/down in the Outline view of an Atlas when working with Animations will no longer trigger a recalculation.

FIX: (#11619) ‘Editor: Fix exception when showing Context Menu for a missing resource’ by matgis
Accessing the Context Menu for a deleted image file referenced from an Atlas no longer throws an exception.

FIX: (#11655) ‘Exclude insignificant entries when applying gui property overrides in the editor’ by matgis
When applying property overrides to Gui nodes, filter out entries that have no significance. This significantly shrinks the list of affected nodes and properties that will need to be applied when loading, which saves around 82 MB of memory and a few seconds of load time in the large project we’re testing with.

FIX: (#4959) ‘Add an embedded sound component instead of using a raw sound’ by AGulev
When a raw sound component is added to a GameObject, it is automatically wrapped and converted into an embedded sound component.

FIX: (#8442) ‘Select the first element by default in forms where choosing an option reveals additional settings’ by vlaaad
In some forms, it’s not immediately clear that menu selections reveal additional options. To improve this, those options are selected by default.

Here’s an example showing how the same file looks to the user immediately after opening it, before and after the changes:
image

FIX: (#11532) ‘Limit max height of editor script dialogs’ by vlaaad
Now, editor dialogs are limited in height. Users are encouraged to use the editor.ui.scroll() container for dialogs that may display a lot of content.

FIX: (#11690) ‘Add /prefs/... editor HTTP server enpoints’ by vlaaad
Now, the editor’s HTTP server allows querying and modifying the preferences using its /prefs/... endpoints.

Use a GET request for reading all preferences:

$ curl http://localhost:$(cat .internal/editor.port)/prefs | jq
{
  ...big JSON blob...
}

Or a group of settings:

$ curl http://localhost:$(cat .internal/editor.port)/prefs/build | jq
{
  "lint-code": true,
  "texture-compression": true,
  "open-html5-build": true
}

Or a single setting:

$ curl http://localhost:$(cat .internal/editor.port)/prefs/build/texture-compression | jq
true

Use a POST request for writing:

$ curl http://localhost:$(cat .internal/editor.port)/prefs/build/texture-compression -X POST -d 'false'
23 Likes

I expected the window titles to be unique to the windows (Defold 1.12.1 - Splash etc.). Seems they are all: Defold 1.12.1, except for when the project is finally open, then its projectname - Defold 1.12.1.

Kinda hard to make window specific rules when the titles are identical. :stuck_out_tongue:

I love this update btw, so many great changes and fixes! :heart_eyes:

6 Likes

Lots of sweet improvements in this update. Thanks everyone who worked on it!

6 Likes

@mats.gisselson @vlaaad Many thanks for improvements! The beta IDE opens my projects much faster and consumes only 4 GB of RAM (previously ~21 GB!).

9 Likes

I’m attempting to bundle for Android with the latest 1.12.1 beta and I’m getting the following error, regardless of whether I build an AAB or APK and regardless of the architecture selected:
ERROR: unspecified:-1: 'com.dynamo.bob.CompileExceptionError: Failed creating AAB base.zip'
ERROR:EXT: Bundling 'Android Application…' failed: prelude.lua:380 Bob invocation failed

I’m using the Android Manifest from builtins and I’ve specified https://build-stage.defold.com/ as the Build Server URL.

I’m able to bundle the same project for Android on 1.12.0 with no issues.

Running Defold 1.12.1 801ef0262414442d744f1c39da10a53268ce25ab on macOS 26.2.

And this happens regardless of which project you try?

And 1.12.0 works?

After further testing, I seem to be able to bundle for Android whenever I pick both architectures (armv7 + arm64). The build always fails if I pick just one of them.

This happens in all of my three latest small/mid-sized Defold mobile projects, but I cannot reproduce it with a new empty test project.

1.12.0 builds all of them correctly, regardless of the architecture that I pick.

EDIT: It always fails at this point:

2026-01-20 18:00:26 INFO    Build tasks took 1.054000 s 
2026-01-20 18:00:46 INFO    Engine build took 21.769000 s 
2026-01-20 18:00:46 INFO    Creating AAB base.zip 
2026-01-20 18:00:46 INFO    Using extender binary for architecture: armv7-android 
2026-01-20 18:00:46 INFO    Copying dex to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/classes.dex 
2026-01-20 18:00:46 INFO    Copying asset /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/default_bundle/game.projectc to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/assets/game.projectc 
2026-01-20 18:00:46 INFO    Copying asset /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/default_bundle/game.arci to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/assets/game.arci 
2026-01-20 18:00:46 INFO    Copying asset /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/default_bundle/game.arcd to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/assets/game.arcd 
2026-01-20 18:00:46 INFO    Copying asset /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/default_bundle/game.dmanifest to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/assets/game.dmanifest 
2026-01-20 18:00:46 INFO    Copying asset /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/default_bundle/game.public.der to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/assets/game.public.der 
2026-01-20 18:00:46 INFO    Copying resources to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/res 
2026-01-20 18:00:46 INFO    Copying engine to /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/lib/armeabi-v7a/libMathCrosswords.so 
2026-01-20 18:00:46 INFO    exec: /var/folders/yy/5g_cvn_50cv14f1tvmhsj4340000gn/T/3863390947606907885/arm64-macos/strip_android /Users/henriquesousa/Developer/Joyglitch/Repositories/math-crosswords/build/armv7-android/MathCrosswords/aab/base/lib/armeabi-v7a/libMathCrosswords.so 
2026-01-20 18:00:46 INFO    result:  
ERROR: unspecified:-1: 'com.dynamo.bob.CompileExceptionError: Failed creating AAB base.zip'

ERROR:EXT: Bundling 'Android Application…' failed: prelude.lua:380 Bob invocation failed

Could you please create an issue on GitHub?

1 Like

I’ve created the issue: Unable to bundle for Android on the 1.12.1 Beta, when choosing a single architecture (armv7 OR arm64) · Issue #11771 · defold/defold · GitHub

2 Likes