Ninox release 2.3.0 - What's new?

This update comes with 85 small and big improvements and fixes. To name a few:

New Features:

  • New fiter widget to specify date and time ranges
  • Choice filters do now support multiple options
  • New filter widget for multiple choice fields
  • Improvements of the choice and multiple choice fields
  • New UI element for free text
  • Advanced settings for database background color and image
  • User's image is now also visible within the database
  • Date picker does now sport buttons for today and to clear the date
  • Extending selections upwards / to the left in spreadsheet mode does now work as expected
  • Support for Data Matrix bar codes
  • Use styled text elements in calendar, tables, sub tables and forms
  • Enhanced color picker

Ninox Scripting:

  • Functions will now be preserved even if referenced fields are deleted
  • Improved performance of queries and language parsing (x 85 for the latter)
  • Improved automated formatting
  • Improved error handling
  • Get a user's role: userRole(user) => string
  • Get all users: users() => [user]
  • Duplicate a record: duplicate(this)
  • Capitalize the first letter of each word: capitalize(string) => string
  • Get the creation date of the current record: _cd
  • Get the date of last modification: _md
  • Split a string: split("Hello World", " ") => ["Hello", "World"]
  • Split a string with a regular expression: splitx("Hello World", "\s") => ["Hello", "World"]
  • Get all chosen values from a multiple choice field: chosen(field) => ["Option 1", "Option 2"]
  • Switch syntax: switch Field do case 1: "Option 1" case 2: "Option 2" end
  • Order by syntax: Articles order by Name
  • Pop up a message box: alert("Hello World!")
  • Create Apple's createCalendarReminder(calendarName, title, from, to)
  • Create styled text elements: styled(text, color, icon), e.g. styled("Attention", "red", "warn")
  • Ensure server-side execution of script: do as server ... end
  • Object notations: {name:"Foo"}
  • Call REST services: http(method, url, header, body)

Ninox release 2.2.0 - What's new?


We worked hard to make Ninox even better. This update brings a whole range of improvements including some long-expected features like multiple choice fields and signature fields. Also, the calendar synchronization has been enhanced. And we invested heavily to make the Ninox Cloud synchronization super-reliable.

New Features:

  • Improved calendar synchronization:
    • Select the calendar to sync with
    • Choose how many months should be synced
    • Synchronization takes effect automatically
    Ninox Whats new
  • New calendar settings for working hours
  • New field type: Multiple choice Ninox Whats new
  • New field type: Signature Ninox Whats new
  • Default quality settings for image fields
  • Image field height is now configurable
  • Radio buttons do now support a multi-column layout
  • Improved rendering of colored fields: Ninox automatically picks a high-contrast text color
  • Sub tables can now be displayed as a single field Ninox Whats new

Minor improvements and bug fixes:

  • Improved synchronization of files and fixed problems with handling of certain special characters
  • Printing tables as PDF will include the view's name in the proposed file name
  • Exporting tables as CSV of XLSX will include the view's name in the proposed file name
  • Exporting CSV from the web app will set the content type to text/csv
  • Hovering the database name on the database's home page shows the database's full name as a tool tip
  • Importing tables from other databases will also respect the table's icon
  • Import archive does now restric file types to .ninox
  • Import CSV does now restrict file types to .txt or .csv
  • Leading and trailing spaces on view and print layout names are removed automatically
  • Fixed user's manual link, it does now preselcct the correct locale
  • Added icons for gender identification
  • Fixed date picker on Opera
  • Fixed teh tool tip for Ninox Cloud synchorization
  • Longitude and lattitude have been switched for the location field to meet common conventions
  • Fixed some translations
  • Fixed permissions for deleting records from the context menu
  • Fixed rendering of day numbers on the iPad app's monthly calendar
  • Fixed a display problem in the web app's calendar when switching between months
  • Fixed the position of the side panel popups on wide screens
  • Improved the scrolling with mouse wheels in certain configurations
  • Deleting a table will now remove all assets that are related to that table
  • Fixed a problem with undo of record deletions
  • Fixed a problem with the synchrinzation of static images in print layouts
  • Fixed a problem where sub tables incidentially remembered the selection
  • Improved user feedback on pressing an action button
  • New X button to quickly remove a column filter
  • Adding a link to the web app to an iOS home screen now shows the Ninox app icon
  • Fixed a problem with the import data dialog
  • Creating new records by swiping now works consistently on the iPhone app
  • Sort and filter indicators are now always visible on table views
  • Importing tables from another Ninox database now respects action buttons and triggers
  • Fixed scrolling on the iPhone app's CSV import dialog
  • Fixed rendering of very large numbers
  • Display of the cursor position on the formula editor
  • Fixed rendering of some icons on the iPhone app
  • Fixed role based permissions on field level
  • Fixed rendering of images from related table on the print layout editor
  • Fields do now keep focus when switching between Ninox and another app back and forth
  • New option to duplicate print layouts
  • Fixed a problem with the comments section on the record form
  • Fixed a problem with using date fields as a key on CSV import
  • Color setting for action buttons
  • Improved spinner
  • Handling of thumbnails is now identical on the web and native apps
  • Improved handling of system preference's date format settings
  • Fixed a bug where formula fields did not immediately calculate the value on the web app

Extensions to the NX scripting language:

  • odd(number) => boolean; true, if a number is odd
  • even(number) => boolean; true, if a number is even
  • yearQuarter(timestamp) => string; does now work as expected
  • ninoxApp() => "mac" | "ipad" | "iphone" | "web"; identifies the type of app
  • urlEncode(string) => string; adds percent encodings to a string
  • urlDecode(string) => string; removes percent encoding from a string
  • openURL(string) opens the web browser
  • rsort(array) => array; sorts an array in reverse order (descending)
  • userHasRole(string) => boolean; returns true, if the current user has the specified role
  • Variables: var x := value; variables can be modified afterwards. E.g. var x := 1; ...; x := x + 1;
  • User defined functions: function hello(name) do "Hello " + name + "!" end
  • New for loops: for i from 1 to 100 do ... end, for i from 1 to 100 step 2 do ... end
  • New while loops: while i < 5 do ... end
  • Fixed a problem with "select" formulas on the web app
  • testx(string, regular_expression, flags) => boolean
  • testx(string, regular_expression) => boolean
  • extractx(string, regular_expression, flags, extract); extracts a substring from the given string
  • extractx(string, regular_expression, extract); extracts a substring from the given string
  • extractx(string, regular_expression); extracts a substring from the given string
  • appointment(timestamp, timestamp) => appointment; creates an appointment value
  • appointment(timestamp, duration) => appointment; creates an appointment value
  • createCalendarEvent(calendar, title, from, to)
  • createCalendarEvent(calendar, title, appointment)
  • createCalendarEvent(title, from, to)
  • createCalendarEvent(title, appointment)
  • createCalendarEvent(calendar, title, from, to)
  • createCalendarReminder(calendar, title, start, due)
  • createCalendarReminder(calendar, title, start)
  • createCalendarReminder(calendar, title)
  • createCalendarReminder(title, start, due)
  • createCalendarReminder(title, start)
  • createCalendarReminder(title)
  • closeRecord() closes the top-most record form
  • closeAllRecords() closes all record forms
  • printTable(tablename, viewname) renders the table as a PDF file
  • item(array, index) => value; extracts a single item of an array
  • slice(array, start, end) => array; extracts a sub-array
  • Fixed a problem, where deleting a record from a script lead to UI inconsistencies
  • Fixed a problem with deleting related records from a script

Ninox release 2.0.0 - Ninox Goes Team


After many months of hard work, we are happy to present one of the most significant updates in our history - “Ninox release 2.0.0 - Ninox Goes Team”, which enables complete team synchronisation via Ninox Cloud.

This means you can now invite your teammates and co-workers to collaborate on the same database regardless of whether they use the iPhone App, iPad App, Mac App or Ninox Cloud.

Changes from one device will be immediately published to all other users. With roles and rights you can carefully control who can view/edit databases, tables and fields. And the best thing is, your data will always be available - even when there's no Internet connection.

In order to take advantage of this new functionality, you need to first create a new team account, then invite your teammates to collaborate.

We have also made a number of additional tweaks/optimisations, including:
  • Redesigning the home screen
  • Improving performance and stability
  • Adding highligh functionality for databases using colours and icons

To find out more, read the notes below, or sign up for our launch webinar!

Not one of the 99,000 Ninox users yet? Try our iPhone App, iPad App, Mac App Ninox Cloud!


To help you get started with the new feature we have available, we show below how to create team and how to invite your teammates. If you require fine-grained controls, please review the permission model section.

  1. Create a team
  2. Invite your teammates
  3. Permission model

1. Create a team account

1.1 Open up Ninox
Ninox Whats new
1.2 Sign up and create a team
1.3 Sign up for a new user
1.4 Enter email + password + submit
1.5 Confirm email address
1.6 Then you’re in

2. Invite your teammates

2.1 Click on team account
2.2 Click on invite
Ninox Whats new
2.3 Submit the details of the individual you would like to collaborate with
2.4 Assign role/Create a role (see 3.1 Roles for more information)
2.5 An email invite will then be sent on. The recipient will then be able to access the selected databases according to specified role

3. Permission model

3.1 Roles

Role types

In Ninox we have default roles and custom roles.

The default roles are:
Admin: complete control over the database
Editor: the same as Admin, but without the ability to edit the data model. This is the default role for new invitees.

Custom roles are defined according to specified permissions (see 3.2 Permissions). Only admins can create/assign/edit roles.

Create a new role

To create a new role you have two options:
  • Selecting “create new role” from the permissions drop down when inviting a new user.
  • Selecting “create new role” from the permissions drop-down for an existing user in the team menu

Assign role

  • Select an existing role from the permissions drop-down for an existing user in the team menu (this is only possible if there is a user who currently has that role).

Edit role

  • Go into database, and assign permissions based on requirements (see 3.2 Permissions for details about how permissions based on role type can be set).

3.2 Permissions

Roles can defined as groupings of permissions. These permissions exist on three levels: database, table, and field.

3.2.1 Database permissions

In order to be able to edit permissions at the database level, you have to click on the wrench icon from the database view, then select the Security tab.

Ninox Whats new

Database-level permissions are as follows:
Open Database
Export data
Import data
Print data
Execute update queries (this is the mass-edit function)

3.2.2 Table permissions

In order to be able to edit permissions at the table level you have to go to the table editor. You do this by selecting the gear icon while a table is selected, then “Edit fields”.

Ninox Whats new

Table-level permissions are as follows:
Allowed to read
Allowed to write
Readable if (this new option enables you to specify logic-based read permissions)
Writeable if (this new option enables you to specify logic-based write permissions)
Create new records
Delete records

3.2.3 Field permissions

In order to be able to edit permissions at the field level, you have to visit field properties. You do this by clicking on the wrench icon

Ninox Whats new

Allowed to read
Allowed to write

If you like Ninox, please leave a review on the App Store. This will help us continue bringing free updates on the Mac, iPad and iPhone. Thanks a lot!