# Defold 1.14.0 has been released!

**URL:** <https://forum.defold.com/t/defold-1-14-0-has-been-released/83348>\
**Category:** Release notes\
**Created:** [October 12, 2026, 2:51pm UTC](https://forum.defold.com/t/defold-1-14-0-has-been-released/83348 "2026-10-12T14:51:43Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![britzl](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/britzl/32/23_2.png) [@britzl](https://forum.defold.com/u/britzl)\
**Post date:** [October 12, 2026, 2:51pm UTC](https://forum.defold.com/t/defold-1-14-0-has-been-released/83348/1 "2026-10-12T14:51:43Z")

</div>

# Defold 1.14.0

[![Defold_1_14_0_released](https://forum-defold-uploads.b-cdn.net/original/3X/1/1/119da52ba6331b624399924b37d24c954f2a376d.jpeg)](https://defold.com/2026/10/12/Defold-1-14-0/)

This version contains a number of breaking changes:

### Generational game object handles

This is a breaking change for extension developers with code to manipulate game objects in C++. Game object and collection handles are now generational. Native extensions can retain these opaque handles; Defold rejects handles to deleted objects or collections instead of allowing them to resolve to reused storage. This is a native ABI change.

**MIGRATION** : Prebuilt dmSDK libraries must be rebuilt, and code that treated opaque handles as pointers must use handle-sized storage instead.

### Always use a shared Lua state

This will likely only affect really old projects. The option to use a shared Lua state between `.script,` `.gui_script` and `.render_script` has been the default for a very long time. With this change the option to disable a shared Lua state has been removed.

**MIGRATION** : Refactor any project where the shared Lua state is disabled.

### Remove win32 support

Defold no longer builds or distributes 32-bit Windows runtime, editor, Bob, native-extension, or dependency artifacts. Windows development and bundling now consistently use `x86_64`, while Bob’s legacy `win32` lookup remains as a compatibility alias for `x86_64-win32`.

**MIGRATION** : Review any build scripts which uses `x86-win32` and change them to use `x86_64-win32` instead.

### Support cubemap aware render targets

The function `void SetRenderTarget(HContext context, HRenderTarget render_target, uint32_t transient_buffer_types);` has been deprecated.

**MIGRATION** : Use the new cubemap aware `SetRenderTarget()` function:

```lua
struct RenderTargetBindingParamsExpand
{
    uint32_t m_TransientBufferTypes;
    CubeMapFace m_CubeMapFace;
};
void SetRenderTarget(HContext context, HRenderTarget render_target, const RenderTargetBindingParams& params);

```

## Summary

- **BREAKING CHANGE** : ([#12701](https://github.com/defold/defold/pull/13083)) Add generational game object handles (by JCash)
- **BREAKING CHANGE** : ([#12432](https://github.com/defold/defold/pull/13111)) Always use a shared Lua state (by AGulev)
- **BREAKING CHANGE** : ([#13109](https://github.com/defold/defold/pull/13109)) Remove win32 support (windows 32-bit) (by AGulev)
- **BREAKING CHANGE** : ([#11042](https://github.com/defold/extension-iac/pull/17)) Support iOS links with the UIScene lifecycle (by AGulev)
- **BREAKING CHANGE** : ([#12815](https://github.com/defold/defold/pull/13026)) Support creating cubemap render targets (by Jhonnyg)
- **BREAKING CHANGE** : ([#13353](https://github.com/defold/defold/pull/13353)) Disable accelerometer input by default (by AGulev)
- **BREAKING CHANGE** : ([#13257](https://github.com/defold/defold/pull/13257)) Editor plugin API changes for resource-types (by matgis)
- **NEW** : ([#13205](https://github.com/defold/defold/pull/13204)) Remove usage of GL\_QUADS and GL\_POLYGON (by Jhonnyg)
- **NEW** : ([#12685](https://github.com/defold/defold/pull/13258)) Added b2d.get\_gameobject\_id() / bullet3d.get\_gameobject\_id() (by JCash)
- **NEW** : ([#12608](https://github.com/defold/defold/pull/13280)) Metal default on osx (by Jhonnyg)
- **NEW** : ([#13102](https://github.com/defold/extender/pull/1069)) Shrink Android resources alongside Java code (by AGulev)
- **NEW** : ([#13297](https://github.com/defold/extender/pull/1071)) Update XCode to 27.1, MacOS SDK to 27.0, iOS SDK to 27.1 (by AGulev)
- **NEW** : ([#13315](https://github.com/defold/defold/pull/13180)) Storage buffers support in dmSDK (by Jhonnyg)
- **NEW** : ([#12853](https://github.com/defold/defold/pull/13139)) Support wildcards in .defignore and .defunload patterns (by ekharkunov)
- **NEW** : ([#4863](https://github.com/defold/defold/pull/13186)) Add “New Window” option to the macOS Dock menu (by AGulev)
- **NEW** : ([#13093](https://github.com/defold/extension-live2d-cubism/pull/1)) Updates for the single-graph editor (by vlaaad)
- **NEW** : ([#12948](https://github.com/defold/defold/pull/13166)) Implement configurable shortcuts for switching and reordering tabs (by vlaaad)
- **NEW** : ([#13231](https://github.com/defold/defold/pull/13231)) Implement strict graph connection rules in the editor (by matgis)
- **NEW** : ([#13072](https://github.com/defold/defold/pull/13072)) Establish outbound connections from editor resource nodes prior to loading (by matgis)
- **NEW** : ([#13175,#13100,#12705](https://github.com/defold/defold/pull/13224)) Update JDK to 25.0.4 and JavaFX to 27 (by vlaaad)
- **NEW** : ([#13223](https://github.com/defold/defold/pull/13381)) Add a preference to completely disable Lua language servers (by vlaaad)
- **FIX** : ([#12863](https://github.com/defold/defold/pull/13151)) Support more than 8k images/animations in a GUI component (by Jhonnyg)
- **FIX** : ([#13094](https://github.com/defold/defold/pull/13152)) Improve using go.get/go.set together with matrix types in custom vertex formats (by Jhonnyg)
- **FIX** : ([#12331](https://github.com/defold/defold/pull/13154)) Support using 0 samplers for sprites (by Jhonnyg)
- **FIX** : ([#13156](https://github.com/defold/defold/pull/13156)) Fix normalized depth texture uploads on OpenGL ES (by criccomini)
- **FIX** : ([#12352,#10406](https://github.com/defold/defold/pull/13177)) Fix Apple API deprecations and iOS cold-start links (by AGulev)
- **FIX** : ([#11566](https://github.com/defold/defold/pull/13182)) Fix compressed cubemap face order in OpenGL (by AGulev)
- **FIX** : ([#13202](https://github.com/defold/defold/pull/13237)) Choose Bob’s build server by release channel (by AGulev)
- **FIX** : ([#13262](https://github.com/defold/defold/pull/13262)) Update archive compressor to LZ4 1.10.0 (by JCash)
- **FIX** : ([#13260](https://github.com/defold/defold/pull/13260)) Upgrade Basis Universal to 2.50 (by JCash)
- **FIX** : ([#13283](https://github.com/defold/defold/pull/13283)) Disable “Lint Code on Build” by default (by AGulev)
- **FIX** : ([#12144](https://github.com/defold/defold/pull/13292)) Fix Chrome’s HTML5 web app metadata warning (by AGulev)
- **FIX** : ([#13274](https://github.com/defold/defold/pull/13306)) Use Metal as the default graphics adapter for the iOS simulator (by Jhonnyg)
- **FIX** : ([#13311](https://github.com/defold/defold/pull/13311)) Improved Material Editor UX (by JosephFerano)
- **FIX** : ([#13312](https://github.com/defold/defold/pull/13316)) Fix PVRTC texture uploads on Apple graphics backends (by JCash)
- **FIX** : ([#13314](https://github.com/defold/defold/pull/13326)) Fix for supporting ASTC on older Apple devices (by JCash)
- **FIX** : ([#13331](https://github.com/defold/defold/pull/13338)) Fix GUI safe-area anchoring and rotation updates (by AGulev)
- **FIX** : ([#12627](https://github.com/defold/defold/pull/13342)) Fix resource descriptor versions on creation (by AGulev)
- **FIX** : ([#13206](https://github.com/defold/defold/pull/13334)) Fix attribute cache lifetime counter (by Jhonnyg)
- **FIX** : ([#13374](https://github.com/defold/defold/pull/13385)) Fix literal ampersands breaking rich text (by JCash)
- **FIX** : ([#13185](https://github.com/defold/defold/pull/13185)) Fix macOS launcher showing “Not Responding” (by AGulev)
- **FIX** : ([#13246](https://github.com/defold/defold/pull/13247)) Fix atlas image hashes to follow geometry order (by JCash)
- **FIX** : ([#12928](https://github.com/defold/defold/pull/13259)) Support text shaping for complex scripts, emojis, and bidi (by JosephFerano)
- **FIX** : ([#13227](https://github.com/defold/defold/pull/13232)) Reduce editor CPU usage with multiple open tabs (by AGulev, matgis)
- **FIX** : ([#13289](https://github.com/defold/defold/pull/13327)) Fix camera preview errors with large aspect ratios (by vlaaad)
- **FIX** : ([#13362](https://github.com/defold/defold/pull/13372)) Fix regression that made the editor load longer than before (by vlaaad)
- **FIX** : ([#13365](https://github.com/defold/defold/pull/13378)) Fix lit shaders for ES2 (by Jhonnyg)

## Engine

**BREAKING CHANGE** : ([#12701](https://github.com/defold/defold/pull/13083)) **‘Add generational game object handles’** by JCash  
Game object and collection handles are now generational. Native extensions can retain these opaque handles; Defold rejects handles to deleted objects or collections instead of allowing them to resolve to reused storage.

Collections can now contain up to 1,048,576 game objects. `HGameObject` is the preferred C++ type; `HInstance` remains as a source-compatibility alias.

This is a native ABI change. Prebuilt dmSDK libraries must be rebuilt, and code that treated opaque handles as pointers must use handle-sized storage instead.

Added public API:

- `dmGameObject::HGameObject`.
- `dmGameObject::CollectionResource` and `dmGameObject::ResCollectionGetCollection()`.
- `DM_DEPRECATED(message)` from `<dmsdk/dlib/deprecated.h>`.

Deprecated public API:

- `dmGameObject::GetGeneration()`; the encoded generation is an implementation detail.

**BREAKING CHANGE** : ([#12432](https://github.com/defold/defold/pull/13111)) **‘Always use a shared Lua state’** by AGulev  
Defold now always shares one Lua state between game object, GUI, and render scripts. The obsolete Shared State project setting and its debugger warning have been removed. Projects that previously disabled the setting will now share globals and loaded-module caches after upgrading.

**BREAKING CHANGE** : ([#13109](https://github.com/defold/defold/pull/13109)) **‘Remove win32 support (windows 32-bit)’** by AGulev  
⚠ Defold no longer builds or distributes 32-bit Windows runtime, editor, Bob, native-extension, or dependency artifacts. Windows development and bundling now consistently use `x86_64`, while Bob’s legacy `win32` lookup remains as a compatibility alias for `x86_64-win32`.

**MIGRATION** : Review any build scripts which uses `x86-win32` and change them to use `x86_64-win32` instead.

**BREAKING CHANGE** : ([#11042](https://github.com/defold/extension-iac/pull/17)) **‘Support iOS links with the UIScene lifecycle’** by AGulev  
Update IAC for Defold’s UIScene lifecycle so custom-scheme URLs and universal links continue to reach Lua, including links that launch the app before its listener is registered. Requires Defold/Bob 1.14.0 or later.

Fix needed for comptability after these braking changes [Adopt UIScene lifecycle for iOS · Issue #11042 · defold/defold · GitHub](https://github.com/defold/defold/issues/11042)

**BREAKING CHANGE** : ([#12815](https://github.com/defold/defold/pull/13026)) **‘Support creating cubemap render targets’** by Jhonnyg  
Added support for rendering into cubemap render targets.

![Screen Recording 2026-08-26 at 10 40 48](https://github.com/user-attachments/assets/5a379d70-8925-4001-ac80-5b6def8772e4)

⚠ BREAKING CHANGE ⚠

The dmSDK function to bind a render target has been removed:  
`void SetRenderTarget(HContext context, HRenderTarget render_target, uint32_t transient_buffer_types);`

In favor of using the new cubemap aware params+function:

```lua
struct RenderTargetBindingParamsExpand
{
    uint32_t m_TransientBufferTypes;
    CubeMapFace m_CubeMapFace;
};
void SetRenderTarget(HContext context, HRenderTarget render_target, const RenderTargetBindingParams& params);

```

#### Overview

Cubemap render targets can be created dynamically from render scripts or configured as .render\_target resources in the editor. Individual cubemap faces are selected when binding the render target, allowing applications to render the six views required for realtime reflections, environment capture, point-light shadows, and similar effects. The resulting color attachment is a regular cubemap texture and can be bound to materials/shaders using a `samplerCube`.

Creating a cubemap backed render target from a render script:

```lua
self.environment = render.render_target("environment", {
    type = graphics.TEXTURE_TYPE_CUBE_MAP,
    [graphics.BUFFER_TYPE_COLOR0_BIT] = {
        format = graphics.TEXTURE_FORMAT_RGBA,
        width = size,
        height = size,
    },
    [graphics.BUFFER_TYPE_DEPTH_BIT] = {
        format = graphics.TEXTURE_FORMAT_DEPTH,
        width = size,
        height = size,
    },
})

```

Once created, the render target can be used for drawing by binding a single face of the cubemap:

```lua
local faces = {
    graphics.CUBEMAP_FACE_POSITIVE_X,
    graphics.CUBEMAP_FACE_NEGATIVE_X,
    graphics.CUBEMAP_FACE_POSITIVE_Y,
    graphics.CUBEMAP_FACE_NEGATIVE_Y,
    graphics.CUBEMAP_FACE_POSITIVE_Z,
    graphics.CUBEMAP_FACE_NEGATIVE_Z,
}

for i, face in ipairs(faces) do
    -- NEW: This enables drawing to a cubemap side!
    render.set_render_target(self.environment, { face = face })

    render.clear({
        [graphics.BUFFER_TYPE_COLOR0_BIT] = vmath.vector4(0, 0, 0, 1),
        [graphics.BUFFER_TYPE_DEPTH_BIT] = 1,
    })
    render.set_view(self.cubemap_views[i])
    render.set_projection(self.cubemap_projection)
    render.draw(self.scene_predicate)
end

-- Reset to backbuffer drawing
render.set_render_target(render.RENDER_TARGET_DEFAULT)

-- The cubemap can now be bound globally to any shader that has a cube sampler called "reflection_map"
render.enable_texture("reflection_map", self.environment)

```

⚠ NOTE: Cubemap attachments must be square, non-zero, and equally sized.  
⚠ NOTE: Cubemap multisampling is not included in the MVP1 of this feature. Requests above one sample are normalized to an effective sample count of one.

Demo: [cubemap-render-targets.zip](https://github.com/user-attachments/files/31901349/cubemap-render-targets.zip)

**BREAKING CHANGE** : ([#13353](https://github.com/defold/defold/pull/13353)) **‘Disable accelerometer input by default’** by AGulev  
Accelerometer input now defaults to disabled.

⚠ Projects that rely on acceleration events must explicitly enable it in `game.project`.

**NEW** : ([#13205](https://github.com/defold/defold/pull/13204)) **‘Remove usage of GL\_QUADS and GL\_POLYGON’** by Jhonnyg  
Modernizes the editor graphics backend by replacing the remaining uses of the legacy `GL_QUADS` and `GL_POLYGON` primitive modes. These modes are unavailable in the OpenGL 3.3 core profile.

Rendering behavior should remain unchanged.

**NEW** : ([#12685](https://github.com/defold/defold/pull/13258)) **‘Added b2d.get\_gameobject\_id() / bullet3d.get\_gameobject\_id()’** by JCash  
These new script functions allow you to get the assigned gameobject of a physics body.  
The functions return the game object `id`.  
They return `nil` for bodies that are dynamically created via scripts.

Example:

```lua
local body = b2d.get_body("#collisionobject")
local id = b2d.get_gameobject_id(body)

```

**NEW** : ([#12608](https://github.com/defold/defold/pull/13280)) **‘Metal default on osx’** by Jhonnyg  
Metal is now the default graphics backend for OSX. To change backend to OpenGL or Vulkan (which uses Metal internally), create an app manifest, open the file and then make your selection in the properties panel on the right.

**NEW** : ([#13102](https://github.com/defold/extender/pull/1069)) **‘Shrink Android resources alongside Java code’** by AGulev  
Extender can now remove unused Android resources during R8 builds and return the optimized resources for bundling. Older SDKs retain their existing code-only optimization behavior, and D8 builds retain their original resources.

**NEW** : ([#13297](https://github.com/defold/extender/pull/1071)) **‘Update XCode to 27.1, MacOS SDK to 27.0, iOS SDK to 27.1’** by AGulev  
Extender can build native extensions for iOS 27.1 when its Apple silicon host has Xcode 27.1 and the matching packaged toolchain and SDKs. The setup guide now documents those requirements and how to route builds to that host.

**NEW** : ([#13315](https://github.com/defold/defold/pull/13180)) **‘Storage buffers support in dmSDK’** by Jhonnyg  
Added shader storage buffers (commonly called SSBO’s in graphics terminology) to the `dmGraphics` SDK, allowing native extensions to create, update, and bind buffers for graphics and compute shaders. Includes implementations for Vulkan, Metal, DirectX 12, WebGPU, OpenGL/OpenGL ES where supported, and the null adapter.

API

```c++
// Create a buffer with optional initial data. Returns 0 when unsupported or invalid.
HStorageBuffer NewStorageBuffer(HContext context, uint32_t size, const void* data, BufferUsage buffer_usage);

// Delete a buffer.
void DeleteStorageBuffer(HContext context, HStorageBuffer storage_buffer);

// Replace the complete contents and resize the buffer.
void SetStorageBufferData(HContext context, HStorageBuffer storage_buffer, uint32_t size, const void* data, BufferUsage buffer_usage);

// Update a byte range without resizing.
void SetStorageBufferSubData(HContext context, HStorageBuffer storage_buffer, uint32_t offset, uint32_t size, const void* data);

// Query the logical size in bytes.
uint32_t GetStorageBufferSize(HContext context, HStorageBuffer storage_buffer);

// Bind to the descriptor set and binding declared by the shader.
void EnableStorageBuffer(HContext context, HStorageBuffer storage_buffer, uint32_t set, uint32_t binding);

// Remove all bindings of this buffer from the context.
void DisableStorageBuffer(HContext context, HStorageBuffer storage_buffer);

```

Shader declaration:

```glsl
layout(set = 0, binding = 0, std430) readonly buffer Values {
    vec4 values[];
};

```

Native extension:

```c++
if (dmGraphics::IsContextFeatureSupported(context, dmGraphics::CONTEXT_FEATURE_STORAGE_BUFFER))
{
    // Create the storage buffer
    float values[] = { 1.0f, 2.0f, 3.0f, 4.0f };
    dmGraphics::HStorageBuffer buffer = dmGraphics::NewStorageBuffer(context,
        sizeof(values), values, dmGraphics::BUFFER_USAGE_DYNAMIC_DRAW);

    dmGraphics::EnableStorageBuffer(context, buffer, 0, 0);
    // Draw or dispatch here with a shader using the declaration above.
    dmGraphics::DisableStorageBuffer(context, buffer);
    dmGraphics::DeleteStorageBuffer(context, buffer);
}

```

**FIX** : ([#12863](https://github.com/defold/defold/pull/13151)) **‘Support more than 8k images/animations in a GUI component’** by Jhonnyg  
Fixed an issue where the GUI component would play the incorrect frame in a large atlas (more than 8k images/animations).

**FIX** : ([#13094](https://github.com/defold/defold/pull/13152)) **‘Improve using go.get/go.set together with matrix types in custom vertex formats’** by Jhonnyg  
Fixed an issue where using custom vertex attributes with matrix types did not work correctly with the `go.get()` and `go.set()` functions. The dynamic attribute implementation only had storage for four floats and converted properties based on element count, which caused several issues. Now, matrix attributes consistently use `vmath.matrix4` types instead:

- `go.set()` accepts a vmath.matrix4 for mat2, mat3, and mat4 attributes.
- Mat2 and mat3 attributes extract the upper-left 2×2 or 3×3 portion.
- `go.get()` returns a vmath.matrix4 for every matrix attribute.
- Mat2 and mat3 values are expanded onto an identity matrix.
- Flattened vector values such as vmath.vector4 are rejected for matrix attributes.

```lua
-- Setting matrix values requires a matrix type as the data container
go.set("#model", "custom_mat4", vmath.matrix4())
go.set("#model", "custom_mat3", vmath.matrix4())
go.set("#model", "custom_mat2", vmath.matrix4())

-- Getting matrix values will return a vmath.matrix4, regardless of the source data size
go.get("#model", "custom_mat4")
go.get("#model", "custom_mat3")
go.get("#model", "custom_mat2")

```

Furthermore, 2x2 matrices could previously be set/get via vmath.vector4 types, but this is no longer supported - you need to use a matrix container for this. Note that this is NOT a breaking change, but merely a bug fix. A matrix type is a matrix type and should be treated as such!

**FIX** : ([#12331](https://github.com/defold/defold/pull/13154)) **‘Support using 0 samplers for sprites’** by Jhonnyg  
Fixed an engine crash when using sprite components without textures/samplers.

**FIX** : ([#13156](https://github.com/defold/defold/pull/13156)) **‘Fix normalized depth texture uploads on OpenGL ES’** by criccomini  
Fixes a native OpenGL ES depth-texture allocation failure that can abort the engine with `GL_INVALID_OPERATION`, including on Raspberry Pi 5. Normalized depth textures now use an unsigned integer upload type. No API or render-script changes are required.

**FIX** : ([#12352,#10406](https://github.com/defold/defold/pull/13177)) **‘Fix Apple API deprecations and iOS cold-start links’** by AGulev  
Removes native deprecation warnings from the active macOS and iOS engine build paths and restores forwarding of custom URL links when they launch an iOS app.

**FIX** : ([#11566](https://github.com/defold/defold/pull/13182)) **‘Fix compressed cubemap face order in OpenGL’** by AGulev  
Compressed cubemaps now display their front and back faces correctly with OpenGL. Previously, enabling texture compression swapped these two faces.

**FIX** : ([#13202](https://github.com/defold/defold/pull/13237)) **‘Choose Bob’s build server by release channel’** by AGulev  
Bob now defaults to the production build server only for stable releases and staging for every other channel. This prevents alpha and beta SDKs from reaching an incompatible production server. Explicit `--build-server` overrides continue to work.

**FIX** : ([#13262](https://github.com/defold/defold/pull/13262)) **‘Update archive compressor to LZ4 1.10.0’** by JCash  
Bob now uses the same LZ4 compressor as the runtime engine.  
Also it brings a performance boost of ~21% when compressing our game archive.  
The runtime decompression performance remains unaffected.

We did this to more easily keep code up-to-date, and in the future, we want to support custom compressor algorithms for platforms that support it.

**FIX** : ([#13260](https://github.com/defold/defold/pull/13260)) **‘Upgrade Basis Universal to 2.50’** by JCash  
Updated Basis Universal to version 2.50. Defold continues to use UASTC textures to keep engine size down.

**FIX** : ([#13283](https://github.com/defold/defold/pull/13283)) **‘Disable “Lint Code on Build” by default’** by AGulev  
Code linting during builds is now disabled by default. Users can enable “Lint Code on Build” in Preferences.

**FIX** : ([#12144](https://github.com/defold/defold/pull/13292)) **‘Fix Chrome’s HTML5 web app metadata warning’** by AGulev  
Removes Chrome’s deprecation warning from HTML5 bundles and build time reports while preserving standalone launch from the Home Screen on older iOS versions.

**FIX** : ([#13274](https://github.com/defold/defold/pull/13306)) **‘Use Metal as the default graphics adapter for the iOS simulator’** by Jhonnyg  
Metal is now the default graphics adapter for the iOS simulator.

**FIX** : ([#13311](https://github.com/defold/defold/pull/13311)) **‘Improved Material Editor UX’** by JosephFerano  
Material Editor got a redesign to improve the user experience and visual appearance. It now has header to clearly mark the different sections and shows a read-only table with an editable form for the current selection. Also reduced the width of choice boxes found throughout the editor.

![image](https://github.com/user-attachments/assets/53653075-075e-492b-aa27-fe123fd3e590)

**FIX** : ([#13312](https://github.com/defold/defold/pull/13316)) **‘Fix PVRTC texture uploads on Apple graphics backends’** by JCash  
This fixes an issue when uploading swizzled PVRTC textures on Metal/Vulkan backend on macOS/iOS.

**FIX** : ([#13314](https://github.com/defold/defold/pull/13326)) **‘Fix for supporting ASTC on older Apple devices’** by JCash  
This fix enables ASTC textures on Apple2 Metal devices

**FIX** : ([#13331](https://github.com/defold/defold/pull/13338)) **‘Fix GUI safe-area anchoring and rotation updates’** by AGulev  
Anchored root GUI nodes now respect the safe-area origin, keeping their positions clear of screen cutouts. GUI layout also refreshes when insets change without a window resize, including 180° rotations on iOS and Android.

**FIX** : ([#12627](https://github.com/defold/defold/pull/13342)) **‘Fix resource descriptor versions on creation’** by AGulev  
Newly created resources now store their assigned version. Previously, every new descriptor kept version `0` in the factory map, allowing a stale Lua buffer wrapper to release a replacement resource if its path and memory address were reused.

**FIX** : ([#13206](https://github.com/defold/defold/pull/13334)) **‘Fix attribute cache lifetime counter’** by Jhonnyg  
Fix unbounded cache growth and incorrect expiration of model custom vertex attribute render data. Active entries now survive frame counter wraparound, unused entries expire correctly, and released cache slots are reused.

**FIX** : ([#13374](https://github.com/defold/defold/pull/13385)) **‘Fix literal ampersands breaking rich text’** by JCash  
Treat ampersands as literal text unless they begin one of the five supported complete escapes. Preserve literal ampersands when filtering unsupported glyphs, including output growth through the Java wrapper.

## Editor

**BREAKING CHANGE** : ([#13257](https://github.com/defold/defold/pull/13257)) **‘Editor plugin API changes for resource-types’** by matgis  
Resource readers and loaders previously queried the graph to resolve resource types, dependencies, and templates. The function signatures have been updated to take shared context that is prepared once before we start loading anything, avoiding repeat work during the load process.

This is a breaking editor plugin API change necessitating updates to all extensions with editor plugins. If your project has extensions based on [defold/extension-simpledata](https://github.com/defold/extension-simpledata), the necessary changes can be seen here: [https://github.com/defold/extension-simpledata/pull/23/changes](https://github.com/defold/extension-simpledata/pull/23/changes)

**NEW** : ([#12853](https://github.com/defold/defold/pull/13139)) **‘Support wildcards in .defignore and .defunload patterns’** by ekharkunov  
Now `.defignore` and `.defunload` files supports expressions with wildcard patterns.  
Examples:

| Pattern | Matches | Does not match |
| --- | --- | --- |
| /levels | /levels, /levels/1/map.tilemap | /levelsX, /Levels |
| /a.b | /a.b, /a.b/m.txt | /aXb |
| /levels/\*/tiled | /levels/1/tiled, /levels/1/tiled/a.txt | /levels/tiled, /levels/1/tiledX, /levels/1/other.txt |
| /levels/\* | /levels/a.txt, /levels/a/b.txt | /levels |
| /assets/temp\_??.png | /assets/temp\_01.png | /assets/temp\_1.png, /assets/temp\_001.png |
| /dir(1)/\*.png | /dir(1)/a.png | /dir1/a.png, /dir(1)/b.txt |
| /\*\*/generated | /generated, /a/b/generated/n.txt | /a/b/ungenerated |
| /levels/\*\* | /levels, /levels/a/b/c.txt | /levelsX |
| /a/\*\*/b | /a/b, /a/x/y/b | /a/xb |

**NEW** : ([#4863](https://github.com/defold/defold/pull/13186)) **‘Add “New Window” option to the macOS Dock menu’** by AGulev  
Adds a **New Window** action to Defold’s macOS Dock menu. It opens another editor at the welcome screen, allowing users to open or create a project while keeping their current project open.

**NEW** : ([#13093](https://github.com/defold/extension-live2d-cubism/pull/1)) **‘Updates for the single-graph editor’** by vlaaad

> <https://github.com/defold/defold/issues/13093>
>
> \*\*Task (REQUIRED):\*\*
> Our multigraph system was needed only to separate undoable …and non-undoable changes. Since the recent undo refactoring, we can mix undoable and non-undoable actions in the same graph. Using different graphs is an indirection that slows down every graph interaction. We should get rid of the graphs map as a concept.
> 
> \*\*Expected outcome (REQUIRED):\*\*
> We have only one graph.
> 
> \*\*Context:\*\*
> This is needed for #11990
> 
> \*\*Additional complications/risks:\*\*
> 1. Currently, graphs have "volatility" that prevents connections in certain directions. We can safely drop this, since the types of issues volatility prevents are illogical connections, like making the resource state depend on what we have in the view
> 2. Graph as ownership: we create separate graphs for every view tab. Deleting such graphs deletes every node in the graph. We should be careful and replace graph ownership with cascade-delete ownership where appropriate.
> 3. Graph values -\> system values. We have graph-scoped storage, typically to get a project node id from some node id in the project graph. This should move up a level to system values.
> 4. Copy/override traversal: the current copy and override traversal stops at graph boundaries. But this is a weak protection, while copy and override have proper predicates for walking. Just something to be aware of.
> 5. When we get rid of the graph argument in \`g/make-nodes\`, we will need to update extensions.
> 
> \*\*Notes:\*\*
> \- node ids encode graph reference. we can get rid of this!
> 
> \*\*Progress:\*\*
> \- \[x\] merge ws graph into project graph
> \- \[x\] merge view graph into project graph
> \- \[x\] merge remaining graphs into project graph
> \- \[x\] remove graphs from state, update public APIs/extensions, clean up (node ids etc)

**NEW** : ([#12948](https://github.com/defold/defold/pull/13166)) **‘Implement configurable shortcuts for switching and reordering tabs’** by vlaaad  
The editor now has configurable shortcuts for switching between tabs. The tabs can now also be reordered using keyboard shortcuts.

New shortcuts:

| Command | macOS | Windows / Linux |
| --- | --- | --- |
| Select next tab | ⌃ Tab  
or ⇧⌘] | Ctrl + Tab  
or Ctrl + Page Down |
| Select previous tab | ⌃⇧ Tab  
or ⇧⌘[ | Ctrl + Shift + Tab  
or Ctrl + Page Up |
| Move tab left | ⌥⌘[ | Ctrl + Shift + Page Up |
| Move tab right | ⌥⌘] | Ctrl + Shift + Page Down |

**NEW** : ([#13231](https://github.com/defold/defold/pull/13231)) **‘Implement strict graph connection rules in the editor’** by matgis  
The graph connections established when loading resource nodes have been cleaned up in order to avoid undesirable cross-resource effects.

Part of #10166

**NEW** : ([#13072](https://github.com/defold/defold/pull/13072)) **‘Establish outbound connections from editor resource nodes prior to loading’** by matgis  
Editor resource nodes now establish outbound connections to global systems before they are loaded. This change is intended to enable partial project loading in the future.

Part of #10166

**NEW** : ([#13175,#13100,#12705](https://github.com/defold/defold/pull/13224)) **‘Update JDK to 25.0.4 and JavaFX to 27’** by vlaaad  
Updates the editor’s bundled JDK to 25.0.4.1+1 and JavaFX to 27, fixing reported excessive memory usage on Windows and high background CPU and energy usage on macOS.

**NEW** : ([#13223](https://github.com/defold/defold/pull/13381)) **‘Add a preference to completely disable Lua language servers’** by vlaaad  
This is useful when working on large projects where the coding is done outside the Defold editor, since LuaLS typically uses a lot of memory.

**FIX** : ([#13185](https://github.com/defold/defold/pull/13185)) **‘Fix macOS launcher showing “Not Responding”’** by AGulev  
Removes the extra Defold process that remained in Activity Monitor as “Not Responding” while the editor was running. Also prevents restart failures when the exiting editor closes the new launcher’s output pipes.

**FIX** : ([#13246](https://github.com/defold/defold/pull/13247)) **‘Fix atlas image hashes to follow geometry order’** by JCash  
Fixes incorrect normal maps on multi-textured sprites when their atlases list images in different orders.

The editor now generates image-name hashes from the sorted geometry list, keeping hashes aligned with frame indices. Rename patterns, animation metadata, and geometry variants are preserved.

**FIX** : ([#12928](https://github.com/defold/defold/pull/13259)) **‘Support text shaping for complex scripts, emojis, and bidi’** by JosephFerano  
 ![image](https://github.com/user-attachments/assets/ea70eaa6-a1eb-46e3-802d-f8fca963acc8)

**FIX** : ([#13227](https://github.com/defold/defold/pull/13232)) **‘Reduce editor CPU usage with multiple open tabs’** by AGulev, matgis  
Reduce unnecessary CPU work while resizing the editor, focusing property fields, and leaving a GUI scene idle.

**FIX** : ([#13289](https://github.com/defold/defold/pull/13327)) **‘Fix camera preview errors with large aspect ratios’** by vlaaad  
The editor now keeps camera previews within their display bounds and skips previews that cannot be rendered.

**FIX** : ([#13362](https://github.com/defold/defold/pull/13372)) **‘Fix regression that made the editor load longer than before’** by vlaaad  
In recent releases, the time from launching the editor to showing the welcome screen has regressed. Now it’s back to normal!

**FIX** : ([#13365](https://github.com/defold/defold/pull/13378)) **‘Fix lit shaders for ES2’** by Jhonnyg  
Fixed an issue where the lighting.glsl include was not compatible with OpenGL ES2 contexts.

---

<div class="post-metadata">

**Author:** ![JuLongZhiLu](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/julongzhilu/32/42720_2.png) [@JuLongZhiLu](https://forum.defold.com/u/JuLongZhiLu)\
**Post date:** [October 12, 2026, 3:57pm UTC](https://forum.defold.com/t/defold-1-14-0-has-been-released/83348/2 "2026-10-12T15:57:15Z")

</div>

congrats ! I can’t wait to update it ! 🥳

 ![image](https://forum-defold-uploads.b-cdn.net/original/3X/f/a/faaa373c65d0af9475cbb1c30214ebf013851e04.jpeg)  
 ![image](https://forum-defold-uploads.b-cdn.net/original/3X/3/c/3c3cd5f85cae6db6d3490dd280e2972ce07b5944.png)

---

<div class="post-metadata">

**Author:** ![JuLongZhiLu](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/julongzhilu/32/42720_2.png) [@JuLongZhiLu](https://forum.defold.com/u/JuLongZhiLu)\
**Post date:** [October 12, 2026, 4:04pm UTC](https://forum.defold.com/t/defold-1-14-0-has-been-released/83348/3 "2026-10-12T16:04:40Z")

</div>

Great! I found that I can change Editor’s title bar color.  
I remember the Editor’s title bar color was always white before

 ![image](https://forum-defold-uploads.b-cdn.net/original/3X/0/a/0aad42f8de118e64aa7989fa88705f9fe27c05cb.png)

---

<div class="post-metadata">

**Author:** ![Pawel](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/pawel/32/24623_2.png) [@Pawel](https://forum.defold.com/u/Pawel)\
**Post date:** [October 12, 2026, 4:47pm UTC](https://forum.defold.com/t/defold-1-14-0-has-been-released/83348/4 "2026-10-12T16:47:15Z")

</div>

Release announcement post on our blog:

> **[Defold release 1.14.0](https://defold.com/2026/10/12/Defold-1-14-0/)**
>
> Defold 1.14.0 has been released - ready for iPhone Duo, new Xbox support, cubemap render targets, a redesigned Material Editor, and a more efficient editor.
