# Titanium SDK 8.0.0.RC - 20 February 2019
# About this release
Titanium SDK 8.0.0 is a major release of the SDK, addressing high-priority issues from previous releases.
# LiveView
Integrating LiveView into the SDK allows us to provide a better experience to users who use the Atom and VS Code editor plugins or use the CLI by itself.
If you're using Studio, you'll need to download Studio 5.1.2.201812191857 from the Beta stream on https://preview.appcelerator.com/appc-studio/ (opens new window). This beta contains an updated LiveView that accounts for the LiveView integration in SDK 8.0.0.
If you are installing the LiveView package from npm and installing the hook in that package, you will need to remove the path from the paths.hooks
array in ~/.titanium/config.json
. This install method has never been officially supported and conflicts with the LiveView installation in the SDK.
# SOASTA Module
SOASTA Module is not included in this version. Users using Soasta module for their automated testing are advised to use version 7.x of the SDK.
# Parity for Ti.UI.NavigationWindow
Moved from Ti.UI.iOS.NavigationWindow
to Ti.UI.NavigationWindow
in order to make it cross platform and deprecated Ti.UI.iOS.NavigationWindow
# Support
As of this release, Titanium SDK 8.x will not be supported one calendar year (2020-02-20) from 8.0.0.GA's release date. See Axway Appcelerator Deprecation Policy and Nominal Lifetimes documents for details.
# Notice of feature and behavior changes
# Android platform
TIMOB-24851 (opens new window) - Android: Deprecate Label "wordWrap" property (it's not needed)
- Deprecated
wordWrap
property ofTi.UI.Label
- Deprecated
TIMOB-26075 (opens new window) - Android: Refactor app resume and "newintent" handling
Fixed bug where an intent can create a 2nd app instance stuck at the splash screen if an app instance already exists.
This hanging event typically happens when app is launch via URLs, tapping notifications, and so on
Resolve this issue by immediately destroying second instance, resuming existing activity, and firing a
newintent
event which simulates AndroidsingleTask
handling
TIMOB-26132 (opens new window) - Android: Remove Ti.Geolocation "legacy" mode
- Removed
ACCURACY_*
constants and thefrequency + preferredProvider
property
- Removed
TIMOB-26340 (opens new window) - Android: Update V8 runtime to 7.0.276.42
- updated V8 runtime to 7.0.276.42
TIMOB-26227 (opens new window) - Android: Remove kroll-thread
- Removed deprecated kroll thread
TIMOB-26633 (opens new window) - Android: Change min supported version to Android 4.4 (API Level 19)
- Pushed the minimum Android OS supported version to Android 4.4 (API Level 19)
TIMOB-26638 (opens new window) - Android: Root Ti.Android.Activity "intent" property should be updated when "newintent" event is fired
intent
property used to be assigned the intent that originally launched/created the activity and would never changeThis is needed in case
newintent
event gets fired before theapp.js
has a chance to set up a listener for it. Can happen when receiving a URL intent during a cold start of the app.
TIMOB-26560 (opens new window) - Android: Remove deprecated Ti.UI.KEYBOARD_* constants in favor of TI.UI.KEYBOARD_TYPE_*
- Removed deprecated
Ti.UI.KEYBOARD_*
constants. UseTI.UI.KEYBOARD_TYPE_*
in its place
- Removed deprecated
# iOS platform
TIMOB-17887 (opens new window) - iOS: Add Swift modules support
- Added support for Swift modules
TIMOB-25008 (opens new window) - iOS: Remove deprecated Ti.UI.KEYBOARD_* constants in favor of TI.UI.KEYBOARD_TYPE_*
- Deprecated
Ti.UI.KEYBOARD_*
constants in favor ofTI.UI.KEYBOARD_TYPE_*
- Deprecated
TIMOB-25748 (opens new window) - iOS: Remove TiCore
- Removed TiCore in favor of built-in JavaScriptCore
TIMOB-25927 (opens new window) - iOS: Move SDK-core to own framework
- Moved SDK-core into
TitaniumKit.framework
- Moved SDK-core into
TIMOB-26095 (opens new window) - iOS 12: UIWebView deprecated in favor of WKWebView
- Replaced UIWebView API in favor of WKWebView
TIMOB-26123 (opens new window) - iOS: Drop iOS 8 support, use iOS 9 as the minimum target
- Set iOS9 as the minimum supported versions
TIMOB-26226 (opens new window) - iOS: Remove kroll-thread
- Removed deprecated kroll thread
# Windows platform
TIMOB-25582 (opens new window) - Windows: Support for dp in ti.ui.defaultunit
Added support for dp unit for
ti.ui.defaultunit
Previously, Windows default unit was "px". As of this release, the default value will be "dp". In order to keep consistency between previous versions, you will need to explicitly set
<property name="ti.ui.defaultunit" type="string">px</property>
intiapp.xml
.
TIMOB-26503 (opens new window) - Windows: Touch event coordinate units do not match between platforms
- Parity for touch event coordinate units
TIMOB-26562 (opens new window) - Windows: Remove deprecated Ti.UI.KEYBOARD_* constants in favor of TI.UI.KEYBOARD_TYPE_*
- Removed deprecated
Ti.UI.KEYBOARD_*
constants. UseTI.UI.KEYBOARD_TYPE_*
in its place
- Removed deprecated
# Multiple platforms
TIMOB-23496 (opens new window) - TiAPI: Deprecate old Geolocation properties, add more parity
Throw deprecation notices when
Ti.Geolocation.reverseGeocode
is returned (with suggested replacements)Deprecated
country_code
,displayAddress
andzipcode
properties in favor ofcountryCode
,address
andpostalCode
,respectivelyBreaking change:
latitude
andlongitude
are returned as numbers and not string on Android (parity with iOS and Windows behavior)
TIMOB-24589 (opens new window) - TiAPI: Remove Ti.Yahoo from SDK-core
- Removed
Ti.Yahoo
from SDK core and moved it into it's own module
- Removed
TIMOB-25650 (opens new window) - Upgrade to babel 7
- Updated to Babel 7
TIMOB-26119 (opens new window) - TiAPI: Deprecate getter/setter accessor methods for properties
- Deprecated getter/setter accessor methods
TIMOB-26153 (opens new window) - CLI: Remove Node 4 as a supported version
- Removed node 6 from supported versions
TIMOB-26410 (opens new window) - LiveView: Integrate liveview into the SDK
- Integrated LiveView in the SDK
TIMOB-26137 (opens new window) - TiAPI: Move 2DMatrix and 3DMatrix to Matrix2D and Matrix3D
- Renamed 2DMatrix and 3DMatrix to Matrix2D and Matrix3D to address ES6 imports and Angular and View support
TIMOB-26140 (opens new window) - Windows: Move 2DMatrix and 3DMatrix to Matrix2D and Matrix3D
- Renamed 2DMatrix and 3DMatrix to Matrix2D and Matrix3D to address ES6 imports and Angular and View support
TIMOB-26661 (opens new window) - Update Hyperloop to 4.0.0
- Updated the SDK's bundled Hyperloop version to 4.0.0
TIMOB-26740 (opens new window) - Update Hyperloop to 4.0.1
- Updated the SDK's bundled Hyperloop version to 4.0.1
# New features
# Android platform
TIMOB-16789 (opens new window) - Android: Add animation "curve" support
- Parity for
Ti.UI.Animation
animation curves
- Parity for
TIMOB-17389 (opens new window) - Android: Implement FastScroll capability on ListView
- Added fastScroll to ListViews
TIMOB-24582 (opens new window) - Android: Navigation parity for a cross-platform Ti.UI.NavigationWindow
- Implemented
Ti.UI.NavigationWindow
- Implemented
TIMOB-25953 (opens new window) - Android: Add "Ti.UI.TabbedBar" support
- Parity for Android adding
Ti.UI.TabbedBar
- Parity for Android adding
TIMOB-26354 (opens new window) - Android: Refactor TabGroup and introduce new style
- Refactored TabGroup by replacing ActionBar with TabLayout and introduced a new style for using BottomNavigationView
TIMOB-26636 (opens new window) - Android: Remove deprecated "newIntent" event in favor of "newintent"
- Removed deprecated
newIntent
event in favor ofnewintent
- Removed deprecated
TIMOB-26637 (opens new window) - Android: Add "rootActivity" property to Ti.Android module
Improved intent-filter usability since only the root activity will receive the new intent
The
currentActivity
property always references the top-most activity opened byTi.UI.Window
# iOS platform
TIMOB-26060 (opens new window) - iOS: Move iOS-only Ti.UI.iOS.NavigationWindow to cross-platform Ti.UI.NavigationWindow
- Parity: Moved from
Ti.UI.iOS.NavigationWindow
toTi.UI.NavigationWindow
in order to make it cross platform and deprecatedTi.UI.iOS.NavigationWindow
- Parity: Moved from
TIMOB-26461 (opens new window) - iOS: Add "safeAreaPadding" property to Ti.UI.Window
- Parity for iOS of
Ti.UI.Window
'ssafeAreaPadding
property
- Parity for iOS of
TIMOB-26674 (opens new window) - iOS: Un-deprecate "Ti.UI.TabbedBar" and deprecate "Ti.UI.iOS.TabbedBar"
Ti.UI.TabbedBar
support was added to Android in 8.0.0Re-added
Ti.UI.TabbedBar
support to iOSCalling
Ti.UI.iOS.createTabbedBar()
now logs a deprecation warning
# Windows platform
TIMOB-25537 (opens new window) - Windows: Navigation parity for a cross-platform Ti.UI.NavigationWindow
- Parity for
Ti.UI.NavigationWindow
- Parity for
TIMOB-26415 (opens new window) - Windows: Added Ti.App event "userinteraction" and property "trackUserInteraction"
- Added
userinteraction
andtrackuserInteraction
toTi.App
- Added
TIMOB-26464 (opens new window) - Windows: Add Ti.UI.Window property "safeAreaPadding"
- Parity for Windows of
Ti.UI.Window
'ssafeAreaPadding
property
- Parity for Windows of
TIMOB-26498 (opens new window) - Windows: ListView item template support CommonJS modules and Alloy widgets
- Added feature that allows ListView template to support CommonJS modules and Alloy widgets
# Multiple platforms
TIMOB-13966 (opens new window) - TiAPI: Select Locale for L() at runtime
- Modified localized string ID properties such as
titleid
andtextid
to load from the same context as theL()
function
- Modified localized string ID properties such as
TIMOB-18582 (opens new window) - TiAPI: Create Node-compatible path module API
- Added feature that allows some of the core Node modules in Titanium to port/re-use node codebases on mobile devices
TIMOB-18584 (opens new window) - TiAPI: Create Node-compatible os module API
- Added feature that allows some of the core Node modules in Titanium to port/re-use node codebases on mobile devices
TIMOB-18597 (opens new window) - LiveView: Support selective compilation for Alloy
- Updated LiveView to latest version
TIMOB-25861 (opens new window) - Liveview: Support transpiling user code
- Added support for transpiling user code
TIMOB-26703 (opens new window) - TiAPI: Add Ti.App "started" event
- Added Ti.App event
started
- Added Ti.App event
TIMOB-26146 (opens new window) - Enable ES6 transpile/polyfill by default
- Made transpiling an opt-out by default
# Community credits
Ken Rucker - TIMOB-26370 (opens new window)
Ma Wenli - TIMOB-26453 (opens new window)
David van de Meer (opens new window) - TIMOB-26480 (opens new window)
Teun Klijn - TIMOB-26594 (opens new window)
Alka Gurung - TIMOB-25760 (opens new window)
Andreas Pingas - TIMOB-26639 (opens new window)
Timan Rebel (opens new window) - TIMOB-17931 (opens new window)
Adam Armstrong - TIMOB-26657 (opens new window)
Luc-Edmond Gaspard - TIMOB-24659 (opens new window)
# Fixed issues
# Android platform
TIMOB-19695 (opens new window) - Android: TabGroup cannot use "NoTitleBar" themes
TIMOB-20266 (opens new window) - Android: ListView with attributed strings are not rendering sometimes
TIMOB-26370 (opens new window) - Android: "Failed to create external storage directory" when download image and save to camera roll
TIMOB-26453 (opens new window) - Android: default value of borderWidth of view is not respected, if borderRadius is set (but no borderColor)
TIMOB-26480 (opens new window) - Android: Titanium.UI.ProgressBar 'color' setting portion of progressBar - should be text only
TIMOB-26488 (opens new window) - Android: Fix Ti.Filesystem.requestStoragePermissions for Android 8 and above
TIMOB-26535 (opens new window) - Android: Fix analytics session events
TIMOB-26537 (opens new window) - Android: Module "AndroidManifest.xml"
<uses>
elements overwrites "tiapp.xml" elementsTIMOB-26538 (opens new window) - Android: Services should be stopped when exiting the app
TIMOB-26539 (opens new window) - Android: Label's default font size should be "dp" unless explicitly set
TIMOB-26541 (opens new window) - Android: setTimeout and setInterval do not support calls without interval specified
TIMOB-26545 (opens new window) - Android: Using global L() method for localization does not work if second argument is not supplied
TIMOB-26555 (opens new window) - Android: Broadcast receivers should be unregistered when exiting the app
TIMOB-26580 (opens new window) - Android: ListView templates not compatible with native modules
TIMOB-26585 (opens new window) - Android: Liveview throws exception due to null object reference with latest 8.0.0
TIMOB-26601 (opens new window) - Android: Cannot apply theme with "windowTranslucentNavigation" or "windowTranslucentStatus" to splash screen as of 7.5.0
TIMOB-26713 (opens new window) - Android: TabGroup "tabsBackgroundColor" property ignored when landscape
TIMOB-26714 (opens new window) - Android: TabGroup "tabsBackgroundSelectedColor" property is ignored
TIMOB-26716 (opens new window) - Android: 'Error while reading asset' Can be seen intermittently when running certain Android applications
TIMOB-26719 (opens new window) - Android: ListView no longer applying default row height
TIMOB-26725 (opens new window) - Android: Liveview closes file/event server process after the first app reload & stops working
TIMOB-26824 (opens new window) - Android: Build resources can fail to copy correctly
# iOS platform
TIMOB-26113 (opens new window) - iOS: Ti.UI.convertUnits does not consult ti.ui.defaultunit property
TIMOB-26117 (opens new window) - iOS: ES6 promises not supported on iOS 9. (Works on iOS 8 and 10.)
TIMOB-26341 (opens new window) - iOS: Remove Ti.UI.ButtonBar "index" property
TIMOB-26371 (opens new window) - iOS: Build throws ENOENT when building to iOS device
TIMOB-26445 (opens new window) - iOS: Default framework header search paths should be injected by template
TIMOB-26520 (opens new window) - iOS: App fails to install on device using a build from Master
TIMOB-26551 (opens new window) - iOS: "Cannot read property 'code' of undefined" error thrown if log server connection times out
TIMOB-26586 (opens new window) - iOS: Animation curve ease-in/ease-out does not auto-reverse correctly
TIMOB-26587 (opens new window) - Babel throwing an error on build
TIMOB-26590 (opens new window) - iOS: Animation never rotates counter-clockwise when set to -180 degrees
TIMOB-26594 (opens new window) - iOS: Exception when canceling local notifications with removePendingNotifications
TIMOB-26597 (opens new window) - CLI: Prompted for ios code base type when creating an android module
TIMOB-26639 (opens new window) - iOS: hasText() does not work
TIMOB-26641 (opens new window) - iOS: On main thread openWindow and closeWindow in sequence from NavigationWindow is not working properly
TIMOB-26657 (opens new window) - iOS: 'masterIsOverlayed' not working when app is in Split View Mode & Landscape
TIMOB-26668 (opens new window) - iOS: Using ScrollView without RefreshControl breaks build
TIMOB-26671 (opens new window) - Hyperloop does not load in TitaniumKit
TIMOB-26672 (opens new window) - iOS: Application crashes on launch on iOS9
TIMOB-26673 (opens new window) - iOS: Race conditions in async APIs (e.g. timers)
TIMOB-26687 (opens new window) - iOS: URL-handling does not work if the app is booted from cold-start
TIMOB-26688 (opens new window) - iOS: Proxy objects created in timers aren't released properly
TIMOB-26694 (opens new window) - [iOS] Runtime errors are not shown in console
TIMOB-26705 (opens new window) - iOS: Ti.App._restart() crashes application
TIMOB-26710 (opens new window) - [iOS] Example app.js is incorrect when creating a iOS Swift module
TIMOB-26738 (opens new window) - iOS: Using punctuation in a featureEvent name throws an error
TIMOB-26742 (opens new window) - TiAPI: App launch slowed down by 2-5 seconds in SDK 8
TIMOB-26745 (opens new window) - IOS: Build fails with "ld: symbol(s) not found for architecture x86_64"
# Windows platform
TIMOB-24401 (opens new window) - Windows: View.visible="false" does not work.
TIMOB-24422 (opens new window) - Windows: Deployment fails with "violates pattern constraint of bms-resource"
TIMOB-25760 (opens new window) - Windows: Titanium.Network.HTTPClient Location doesn't return the redirected URL
TIMOB-25789 (opens new window) - Windows: HttpClient.onreadystatechange should be called right after ondatastream/onsendstream
TIMOB-26159 (opens new window) - Windows: File.getDirectoryListing() returns empty array for file or non-existent directory.
TIMOB-26524 (opens new window) - Windows: Can not compile folder with spaces
TIMOB-26549 (opens new window) - Windows: HTTPClient: Invalid Status Codes returned
TIMOB-26564 (opens new window) - Windows: Cannot find module 'babylon' error thrown on build
TIMOB-26565 (opens new window) - Windows: Building with hyperloop fails with "traverse is not a function"
TIMOB-26577 (opens new window) - Windows: ScrollView sizing incorrectly in a vertical layout
TIMOB-26578 (opens new window) - Windows: Missing trailing separator for directory in Ti.Filesystem.File#nativePath
TIMOB-26579 (opens new window) - Windows: Ti.UI.ImageView's load event object has no state property
TIMOB-26667 (opens new window) - Windows: Ti.Locale.getString should ignore non-string default value
TIMOB-26748 (opens new window) - Windows: Always send full analytics payload
TIMOB-26766 (opens new window) - Windows: Error thrown when installing to wp-device
TIMOB-26776 (opens new window) - Windows: App launch failed with "cyclic redundancy check" error on device
TIMOB-26781 (opens new window) - Windows: When using Liveview: 'alloy' is not recognized as an internal or external command' error is shown
# Multiple platforms
TIMOB-25839 (opens new window) - TiAPI: Touch event coordinate units do not match between platforms
TIMOB-26563 (opens new window) - TiAPI: 2DMatrix translate() coordinate units do not match between platforms
TIMOB-26595 (opens new window) - CLI: Unable to create module using latest the build from Master
TIMOB-26704 (opens new window) - LiveView: Transpilation does not work if not set in tiapp
TIMOB-26727 (opens new window) - Hyperloop: Android app using hyperloop 4.0.0 hangs on splash when built with 7.5.0.GA & latest 7.5.1
TIMOB-26764 (opens new window) - Change minsdk of ACA module to 8.0.0
TIMOB-26785 (opens new window) - Cease the inclusion of SOASTA in the SDK from 8.0.0+
# Improvements
# Android platform
TIMOB-17931 (opens new window) - Android: support the theme property for TabGroups
- Added support for theme properties for
TabGroups
- Added support for theme properties for
TIMOB-25200 (opens new window) - Android: Expose BottomNavigationView as new Android Ti.UI.TabGroup
- Added support for
BottomNavigationView
inTi.UI.TabGroup
- Added support for
TIMOB-26288 (opens new window) - Android: Add ability to hide/show back button on Window
- Added ability to toggle back button on window
TIMOB-26355 (opens new window) - Android: Implement V4 Analytics specification
- Implemented V4 payload specification
TIMOB-26402 (opens new window) - Android: Maintain native module compatibility with Titanium 7.0.0
Updated V8 to
7.0.276.13
Maintain backwards compatibility with existing Titanium 7.X.X native modules
Included missing/deprecated methods from previous V8 versions to maintain backwards compatibility with Titanium 7.0.0
TIMOB-26518 (opens new window) - Android: Webview FireEvent not get fired in correct sequence
- Fixed WebView code execution order
TIMOB-26645 (opens new window) - Android: Calling finish() on root splash screen activity should exit the app
- This makes it easier for Titanium apps launched via
startActivityForResult()
since the app needs to callsetResult()
andfinish()
methods on root activity to return a result
- This makes it easier for Titanium apps launched via
TIMOB-24659 (opens new window) - Android: Add support for the roundIcon attribute
- Added support for the
roundIcon
attribute
- Added support for the
# iOS platform
TIMOB-26505 (opens new window) - IOS: Include reverted changes form PR 10411
- Reverted module zip path for studio compatibility
TIMOB-26197 (opens new window) - iOS: Deprecate Ti.Media.createSystemAlert, move to own "Ti.SystemAlert" module
- Deprecated
Ti.Media.createSystemAlert
and implementedTi.SystemAlert
module
- Deprecated
TIMOB-26356 (opens new window) - iOS: Implement V4 Analytics specification
- Implemented V4 payload specification
# Windows platform
TIMOB-26357 (opens new window) - Windows: Implement V4 Analytics specification
- Implemented V4 payload specification
TIMOB-26508 (opens new window) - Windows: Setting undefined should clear layout value
- Setting
undefined
to layout property clears layout value. Example, setting bothleft
andtop
disablescenter
property.
- Setting
TIMOB-26648 (opens new window) - Windows: ability to override global functions
- Windows parity to allow to override global functions like
setTimeout
- Windows parity to allow to override global functions like
# Multiple platforms
TIMOB-26023 (opens new window) - TiAPI: Add Ti.Blob parity across platforms
- Parity for
Ti.Blob
- Parity for
TIMOB-26411 (opens new window) - API: Support async variants of Ti.IOStream methods
- Changed the synchronous nature of Ti.IOStream to asynchronous
TIMOB-26556 (opens new window) - TiAPI: Modify SDK JS files to not use deprecated property get/set methods
- Throw warning message if deprecated getter/setter methods are used
TIMOB-26613 (opens new window) - node-ios-device: Add Node.js 11 support
- Added support for Node.js version 11
TIMOB-26726 (opens new window) - Liveview: Autokill server after a period of time
- Added feature that kills LiveView server after 10 seconds of inactivity
TIMOB-26823 (opens new window) - Update Facebook module to latest version
Updated Facebook module to Android (8.0.0) and iOS (6.0.0)
This is a breaking change as the Facebook module removed the like button
# Hyperloop
⚠️ Warning
Hyperloop 4.0.0 is only compatible with SDK 8.0.0 and newer.
# Android
- Fixed overriding methods that may receive null values as arguments
# iOS
Added support for dotted enums (like in Swift)
// before import { UIControlStateNormal, UIControlStateSelected } from 'UIKit'; alert(UIControlStateNormal); // now import { UIControlState } from 'UIKit'; alert(UIControlState.Normal);
Refactored iOS metabase generation to improve build time
Store system frameworks globally (in
~/.hyperloop
) to be reused by different appsOnly generate required frameworks
Cache CocoaPods builds across builds
Internal refactoring and optimization
Exclude types that are unavailable on iOS from metabase
Removed support for TiCore runtime
# Windows
Added support for namespace-based imports like Android
import { UICommand, MessageDialog } from 'Windows.UI.Popups.*';
# API changes
# New APIs
# Deprecated APIs
# Removed APIs
# SDK modules versions
# Android and iOS
Module | iOS version | Android version |
---|---|---|
urlSession | 2.1.0 | n/a |
6.0.0 | 8.0.0 | |
ti.coremotion | 2.1.0 | n/a |
ti.map | 3.1.0 | 4.3.1 |
ti.safaridialog | 1.1.1 | n/a |
ti.webdialog | 1.1.0 | 1.1.0 |
ti.touchid | 2.1.4 | 3.0.1 |
ti.identity | 1.0.5 | 2.0.1 |
ti.cloudpush | n/a | 5.2.0 |
ti.playservices | n/a | 11.0.40 |
# CommonJS
Module | Version |
---|---|
ti.cloud | 3.2.11 |
# Hyperloop
Module | Version |
---|---|
hyperloop | 4.0.1 |