Skip to content
Titanium SDK

Titanium SDK 14.0.0.GA

Released · Announcement post

About this release

Titanium SDK 14.0.0 is a major release of the SDK, adding iPhone Duo and Xcode 27.2 support, a native Ti.UI.iOS.SplitWindow, true multi-scene support on iOS and a modernized Android build stack.

To install this release, run:

ti sdk i 14.0.0.GA

Community Credits

  • Michael Gangolf

    • parity for Matrix2D.rotate(from, to) (54848a1)
    • update material library to 1.14.0 (b3eef62)
    • cache property bridge name strings in the V8 runtime (257c575)
    • stop forcing a full V8 GC after every TiBlob image operation (ac4f5bf)
    • keep the height of TabGroup windows with the vertical tab bar (8519e1c)
    • update WebView to support camera/gallery picker for input fields (b002763)
    • use borderRadius for floating BottomNavigation (255f1da)
    • change app icons at runtime (f9d03ad)
    • code optimizations (04710f5)
    • append ListView events while scrolling (42368d3)
    • fix padding unit in ScrollableView (a1b81e2)
    • expose videoPlayer buffer (56a4877)
    • more attributedString link features (daa3c17)
    • fire label link event for links in html text (c2d20ab)
    • use newer APIs for battery level/status properties (557e145)
    • adjust left padding for ScrollableView (086200b)
    • new property Ti.Android.sdkVersion (80fa7c4)
    • custom gallery folder names (0c2285a)
    • allow VectorDrawables in ImageView (9fbd7f8)
    • add padding property to Label (5c9b7ec)
    • add hideSharedBackground to navBar buttons (5a11ad4)
    • parity for TextArea.scrollable (9a6e101)
    • restart JS runtime for services and receivers after app exit (6b520de)
    • optional parameter for Database open() flags (cd5d5dd)
    • improve CameraX and Database cleanup (4319ceb)
    • add itemlongpress event to Ti.UI.ListView (32df010)
    • parity for Toolbar height property (bc68df4)
    • set gradle/java idle timeouts (40db4ee)
    • make rotation animatable (d749302)
    • use correct dark/light mode image for Buttons (b5166fa)
    • return TableView contentOffset in default units and add iOS getter (f9914d1)
    • use ios.deviceId from CLI config as default --device-id (3a08b63)
    • fix navigationBar appearance when closing windows (b774252)
    • stop forcing UIRequiresFullScreen on Xcode 27 builds (4ad64dc)
    • convert large numbers to string without scientific notation (e9aa4bb)
    • restart app when OS destroys all windows above root activity (54722f0)
    • cameraX rotation crash and wrong orientation (a0e4d05)
    • cancel running animations when a view is released (060ef8b)
    • ignore proxies of a disposed runtime after soft restart (82f0ade)
    • support dark and tinted app icons (bc14f95)
    • release menu items and dialog views with their activity (abe0a5d)
    • keep ActionBar settings when the activity is recreated (5338c23)
    • propagate touch listener changes to nested child views (a786336)
    • remove empty ActionBar gap with navBarHidden on API 30-34 (708b933)
    • webview injectEventBindings method for external pages (3da67e4)
    • import TiApp.h in TiUIiOSProxy (1299e11)
    • update TabGroup background when changing the window background (7bb6591)
    • apply theme's light system bar attributes to window (dc530cc)
    • rename ti.modulesdk920 to ti.modulesdk1341 (fe1f8c3)
    • update ti.crypt to 1.0.1 (6a0728c)
    • faster and more reliable getCurrentPosition (7f7b055)
    • use dark-mode rendition for View.backgroundImage (2b5d014)
    • tableview content update fix (6b6833f)
    • fix edge-to-edge Window.backgroundColor changes after creation (df02037)
    • update internal Android libraries (e7de180)
    • allow TableViewRow height of 0 to collapse the row (494beed)
    • respect touchEnabled:false setting in WebView (411ad22)
    • TIMOB-8243 - don't clamp ScrollView content to viewport on relayout (6ebb8e6)
    • show "ok" button when "buttonNames" is empty (2dc6631)
    • replace deprecated statusBarOrientation usage (d02b52b)
    • fix BuildProductsPath path issue (1f8a32b)
    • gradle 9.4.1 (e23d5c5)
    • add searchText to TableView (ea5d1f6)
    • merge module build.gradle repositories (a09d8c4)
    • webview safe-are-inset fix (23c58b9)
    • parity for touchEnabled in ListView itemClick (2103ade)
    • add CFBundleVersion comment to tiapp.xml (58333bf)
    • npm package.json updates (bcead39)
    • unify yauzl versions (dbd93b6)
    • ti.crypt (3b98a0d)
    • remove danger files, move to native fetch/stream (654ca44)
    • snapping for ListView/TableView (9092c4a)
    • fix layout regression introduced in #14476 (578e3ed)
    • iOS test workflow (ff39092)
    • Github workflow for Android Mocha tests (959ecc7)
    • new iOS Ti.UI.Toolbar property: hideSharedBackground (9f59587)
    • fixing documentation (b32b7eb)
    • improve layout code (8f78cdc)
  • Hans Knöchel

    • fix all high and critical npm audit findings (cf40a8d)
    • add borderDashPattern to Ti.UI.View (89e08af)
    • update ioslib to 6.0.2 (a5675bd)
    • Xcode 27.2 and iPhone Duo fixes (3e7f644)
    • replace custom Ti.UI.iOS.SplitWindow with native UISplitViewController (c48c1a9)
    • add vertical bar APIs for iPhone Duo (99f58f6)
    • add Window.reservedRegions for iPhone Duo (542522a)
    • add hingechange event for iPhone Duo (cd3c69a)
    • be able to build Titanium project from Xcode again (07b72f8)
    • bump minimum iOS version to 16, require Xcode 16 / iOS SDK 18 (4d11ec3)
    • incremental-build optimizations (f70ba91)
    • improve device- and simulator handling in Xcode 27 (ioslib v6.0.1) (c107195)
    • sync changelog with 13_4_X (up to 13.4.1) (d579cd9)
    • update readme.md with spm.json references (017fd7a)
    • run device builds via CoreDevice (devicectl), drop node-ios-device (a499e2b)
    • make scrollToTop and scrollToBottom animatable (f484a41)
    • bump to 14.0.0 (191c9c8)
  • Chris Barber

    • add a contributing guide (89d38bf)
    • generate release notes and open the docs pull request (525f0ae)
    • resolve 23 broken cross-references (8a64932)
    • modernize the project command (9041962)
    • async command validate() and run() (8f818b7)
    • Name the notify job, and finish the rename (#14566) (29c2656)
    • Follow the docs repo rename to titaniumsdk.com (#14565) (6363922)
    • Point the docs regen at titaniumsdk.com (#14564) (f3cfb65)
    • namespace the two colliding showParams pseudo-types (0243b83)
    • correct invalid YAML in Geolocation.yml (d362f35)
    • dispatch regen-builds to titanium-www as well (88cdec7)
  • Prashant Saini

    • deliver notification payload via callback only once (25f2905)
    • open the tab's root-window when the tab becomes active (6b624b4)
  • César Estrada

    • accept quoted keystore paths (8ed5f38)
    • make TabGroup opening lifecycle-safe (108aa29)
    • avoid needless activity recreation when night mode is unchanged (755a3e6)
    • keep the resumed activity on top of the activity stack (18b5b71)
  • Marc Bender

    • tabgroup title in creation and textfield passwordMask default (04bea3b)
    • true iOS multi scene support (c854c71)
    • register AlertDialog/OptionDialog defaults and expose parent setter (c296de4)
    • clipboard — synchronous setText/hasText cache and API 36 hasData fallback (8f51c37)
  • Jason David Miller

    • emit TableView scroll events during scroll-to-top (dcb837a)
    • restore click events for interactive glass effects (d34ce36)
  • abentley8

    • [14544] feat(ios): support Icon Composer app icons (#14543) (6345e9a)
  • Sergey Volkov

    • Android: Ti.UI.Color parity (84cc149)

Bug Fixes

Multiple platforms

  • return TableView contentOffset in default units and add iOS getter (f9914d1)
  • correct invalid YAML in Geolocation.yml (d362f35)
  • namespace the two colliding showParams pseudo-types (0243b83)

Android platform

  • accept quoted keystore paths (8ed5f38)
  • append ListView events while scrolling (42368d3)
  • apply theme's light system bar attributes to window (dc530cc)
  • avoid needless activity recreation when night mode is unchanged (755a3e6)
  • cameraX rotation crash and wrong orientation (a0e4d05)
  • cancel running animations when a view is released (060ef8b)
  • clipboard — synchronous setText/hasText cache and API 36 hasData fallback (8f51c37)
  • code optimizations (04710f5)
  • convert large numbers to string without scientific notation (e9aa4bb)
  • TIMOB-8243 - don't clamp ScrollView content to viewport on relayout (6ebb8e6)
  • fix edge-to-edge Window.backgroundColor changes after creation (df02037)
  • fix layout regression introduced in #14476 (578e3ed)
  • fix padding unit in ScrollableView (a1b81e2)
  • ignore proxies of a disposed runtime after soft restart (82f0ade)
  • improve CameraX and Database cleanup (4319ceb)
  • keep ActionBar settings when the activity is recreated (5338c23)
  • keep the resumed activity on top of the activity stack (18b5b71)
  • make TabGroup opening lifecycle-safe (108aa29)
  • register AlertDialog/OptionDialog defaults and expose parent setter (c296de4)
  • release menu items and dialog views with their activity (abe0a5d)
  • remove empty ActionBar gap with navBarHidden on API 30-34 (708b933)
  • respect touchEnabled:false setting in WebView (411ad22)
  • restart app when OS destroys all windows above root activity (54722f0)
  • restart JS runtime for services and receivers after app exit (6b520de)
  • show "ok" button when "buttonNames" is empty (2dc6631)
  • tabgroup title in creation and textfield passwordMask default (04bea3b)
  • tableview content update fix (6b6833f)
  • use correct dark/light mode image for Buttons (b5166fa)
  • webview safe-are-inset fix (23c58b9)

iOS platform

  • allow TableViewRow height of 0 to collapse the row (494beed)
  • be able to build Titanium project from Xcode again (07b72f8)
  • deliver notification payload via callback only once (25f2905)
  • emit TableView scroll events during scroll-to-top (dcb837a)
  • fire label link event for links in html text (c2d20ab)
  • fix BuildProductsPath path issue (1f8a32b)
  • fix navigationBar appearance when closing windows (b774252)
  • import TiApp.h in TiUIiOSProxy (1299e11)
  • keep the height of TabGroup windows with the vertical tab bar (8519e1c)
  • open the tab's root-window when the tab becomes active (6b624b4)
  • parity for touchEnabled in ListView itemClick (2103ade)
  • propagate touch listener changes to nested child views (a786336)
  • replace deprecated statusBarOrientation usage (d02b52b)
  • restore click events for interactive glass effects (d34ce36)
  • stop forcing UIRequiresFullScreen on Xcode 27 builds (4ad64dc)
  • support dark and tinted app icons (bc14f95)
  • update TabGroup background when changing the window background (7bb6591)
  • use dark-mode rendition for View.backgroundImage (2b5d014)
  • Xcode 27.2 and iPhone Duo fixes (3e7f644)

Features

Multiple platforms

  • add borderDashPattern to Ti.UI.View (89e08af)
  • add itemlongpress event to Ti.UI.ListView (32df010)
  • add padding property to Label (5c9b7ec)
  • add searchText to TableView (ea5d1f6)
  • make rotation animatable (d749302)
  • snapping for ListView/TableView (9092c4a)
  • async command validate() and run() (8f818b7)
  • generate release notes and open the docs pull request (525f0ae)
  • remove danger files, move to native fetch/stream (654ca44)

Android platform

  • adjust left padding for ScrollableView (086200b)
  • allow VectorDrawables in ImageView (9fbd7f8)
  • change app icons at runtime (f9d03ad)
  • custom gallery folder names (0c2285a)
  • expose videoPlayer buffer (56a4877)
  • faster and more reliable getCurrentPosition (7f7b055)
  • improve layout code (8f78cdc)
  • merge module build.gradle repositories (a09d8c4)
  • more attributedString link features (daa3c17)
  • new property Ti.Android.sdkVersion (80fa7c4)
  • optional parameter for Database open() flags (cd5d5dd)
  • parity for TextArea.scrollable (9a6e101)
  • set gradle/java idle timeouts (40db4ee)
  • ti.crypt (3b98a0d)
  • update WebView to support camera/gallery picker for input fields (b002763)
  • use borderRadius for floating BottomNavigation (255f1da)
  • use newer APIs for battery level/status properties (557e145)
  • webview injectEventBindings method for external pages (3da67e4)

iOS platform

  • add CFBundleVersion comment to tiapp.xml (58333bf)
  • add hideSharedBackground to navBar buttons (5a11ad4)
  • add hingechange event for iPhone Duo (cd3c69a)
  • add vertical bar APIs for iPhone Duo (99f58f6)
  • add Window.reservedRegions for iPhone Duo (542522a)
  • make scrollToTop and scrollToBottom animatable (f484a41)
  • new iOS Ti.UI.Toolbar property: hideSharedBackground (9f59587)
  • parity for Matrix2D.rotate(from, to) (54848a1)
  • parity for Toolbar height property (bc68df4)
  • replace custom Ti.UI.iOS.SplitWindow with native UISplitViewController (c48c1a9)
  • run device builds via CoreDevice (devicectl), drop node-ios-device (a499e2b)
  • true iOS multi scene support (c854c71)
  • use ios.deviceId from CLI config as default --device-id (3a08b63)

BREAKING CHANGES

iOS platform

  • replace custom Ti.UI.iOS.SplitWindow with native UISplitViewController (c48c1a9)

Multiple platforms

  • Android: Ti.UI.Color parity (84cc149)

SDK Module Versions

Module Android version iOS Version
facebook 15.0.0 16.0.0
ti.map 5.7.0 7.3.1
ti.webdialog 2.5.0 3.0.2
ti.playservices 18.6.0 n/a
ti.identity 3.2.0 5.0.0
urlSession n/a 4.0.1
ti.coremotion n/a 4.0.1
ti.applesignin n/a 3.1.2
hyperloop 8.0.1 8.0.1