Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/CI_DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ All workflows use standardized tooling versions to ensure consistency:
| ---------------- | -------- | ----------------------------- |
| **Node.js** | `24` | `.nvmrc` |
| **Yarn** | `4.12.0` | `package.json#packageManager` |
| **React Native** | `0.78.2` | `package.json` |
| **React** | `19.0.0` | `package.json` |
| **TypeScript** | `5.9.2` | `package.json` |
| **React Native** | `0.83.2` | `package.json` |
Comment thread
vadymv-mendix marked this conversation as resolved.
Outdated
| **React** | `19.2.14` | `package.json` |
| **TypeScript** | `5.9.3` | `package.json` |

### Android Tooling

Expand Down
4 changes: 3 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

- We downgraded the `OPSqlite` to v15.0.7 to align it with `make-it-native` and `native-template`.
- We upgraded `@op-engineering/op-sqlite` from v15.0.7 to v15.2.5.
- We upgraded core native stack dependencies, including React Native (v0.78.2 -> v0.83.2), React (v19.0.0 -> v19.2.4), and `@react-native-community/cli` (v18.0.1 -> v20.1.2).
- We updated supporting development tooling dependencies (ESLint, Commitlint, Prettier, Lefthook, TypeScript, Turbo, and Release It).

## [v0.3.2] - 2026-01-16

Expand Down
4 changes: 0 additions & 4 deletions MendixNative.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,6 @@ Pod::Spec.new do |s|

s.dependency "SSZipArchive"
s.dependency "RNCAsyncStorage"
s.dependency "ReactCommon"
Comment thread
vadymv-mendix marked this conversation as resolved.
s.dependency "ReactAppDependencyProvider"
s.dependency 'React-Core'
s.dependency 'React-RCTAppDelegate'

install_modules_dependencies(s)
end
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ dependencies {
kapt 'com.github.bumptech.glide:compiler:4.12.0'


api "com.facebook.react:react-android:0.78.2"
api "com.facebook.react:react-android:0.83.2"
api project(':op-engineering_op-sqlite')
api project(':react-native-async-storage_async-storage')
api project(':react-native-gesture-handler')
Expand Down
6 changes: 3 additions & 3 deletions android/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
MendixNative_kotlinVersion=2.0.21
MendixNative_minSdkVersion=24
MendixNative_targetSdkVersion=35
MendixNative_compileSdkVersion=35
MendixNative_minSdkVersion=29
MendixNative_targetSdkVersion=36
MendixNative_compileSdkVersion=36
MendixNative_ndkVersion=27.3.13750724
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ open class ReactFragment : Fragment(), PermissionAwareActivity {
launchOptions = requireArguments().getBundle(ARG_LAUNCH_OPTIONS)
}
checkNotNull(mainComponentName) { "Cannot loadApp if component name is null" }
mReactDelegate = ReactDelegate(activity, reactHost, mainComponentName, launchOptions)
mReactDelegate = activity?.let { ReactDelegate(it, reactHost, mainComponentName, launchOptions) }
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ fun deleteAppDatabaseAsync(reactContext: ReactContext?, cb: BooleanCallback) {
fun clearAsyncStorage(reactNativeHost: ReactNativeHost): Boolean {
val module = reactNativeHost.typeSafeNativeModule<AsyncStorageModule>()
if (module != null) {
module.clearSensitiveData()
Comment thread
vadymv-mendix marked this conversation as resolved.
return true
} else {
return false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ class NativeFsModule(private val reactContext: ReactApplicationContext) {

fun save(blob: ReadableMap, filePath: String, promise: Promise) {
val blobModule = reactContext.getNativeModule<BlobModule?>(BlobModule::class.java)
val blobId = blob.getString("blobId")
val blobId: String = blob.getString("blobId") ?: run {""
promise.reject(ERROR_INVALID_BLOB, "The specified blob is invalid")
return
}

val bytes = blobModule!!.resolve(blobId, blob.getInt("offset"), blob.getInt("size"))
if (bytes == null) {
Expand Down Expand Up @@ -197,12 +200,12 @@ class NativeFsModule(private val reactContext: ReactApplicationContext) {
try {
val bytes =
fileBackend.read(ensureWhiteListedPath(filepath))
val typeRef: TypeReference<MutableMap<String?, Any?>?> =
object : TypeReference<MutableMap<String?, Any?>?>() {
val typeRef: TypeReference<MutableMap<String, Any?>?> =
object : TypeReference<MutableMap<String, Any?>?>() {
}
promise.resolve(
Arguments.makeNativeMap(
ObjectMapper().readValue<MutableMap<String?, Any?>?>(
ObjectMapper().readValue<MutableMap<String, Any?>?>(
bytes,
typeRef
)
Expand Down
8 changes: 4 additions & 4 deletions example/android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
buildscript {
ext {
buildToolsVersion = "35.0.0"
minSdkVersion = 24
compileSdkVersion = 35
targetSdkVersion = 35
buildToolsVersion = "36.0.0"
minSdkVersion = 29
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "27.3.13750724"
kotlinVersion = "2.0.21"
}
Expand Down
32 changes: 16 additions & 16 deletions example/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mendix-native-example",
"version": "0.0.1",
"version": "0.1.0",
"private": true,
"scripts": {
"android": "react-native run-android",
Expand All @@ -22,29 +22,29 @@
"harness:ios:with:build": "yarn app:package:ios && yarn app:install:ios && yarn harness:ios"
},
"dependencies": {
"@op-engineering/op-sqlite": "15.0.7",
"@react-native-async-storage/async-storage": "2.1.1",
"react": "19.0.0",
"react-native": "0.78.2",
"react-native-gesture-handler": "2.25.0"
"@op-engineering/op-sqlite": "15.2.5",
"@react-native-async-storage/async-storage": "2.2.0",
"react": "19.2.4",
"react-native": "0.83.2",
"react-native-gesture-handler": "2.30.0"
},
"devDependencies": {
"@babel/core": "7.25.2",
"@babel/preset-env": "7.25.3",
"@babel/runtime": "7.25.0",
"@react-native-community/cli": "18.0.1",
"@react-native-community/cli-platform-android": "18.0.1",
"@react-native-community/cli-platform-ios": "18.0.1",
"@babel/runtime": "^7.28.4",
"@react-native-community/cli": "20.1.2",
"@react-native-community/cli-platform-android": "20.1.2",
"@react-native-community/cli-platform-ios": "20.1.2",
"@react-native-harness/jest": "1.0.0-alpha.21",
"@react-native-harness/platform-android": "1.0.0-alpha.21",
"@react-native-harness/platform-apple": "1.0.0-alpha.21",
"@react-native/babel-preset": "0.78.2",
"@react-native/metro-config": "0.78.2",
"@react-native/typescript-config": "0.78.2",
"@types/react": "19.0.0",
"react-native-builder-bob": "0.40.16",
"@react-native/babel-preset": "0.83.2",
"@react-native/metro-config": "0.83.2",
"@react-native/typescript-config": "0.83.2",
"@types/react": "19.2.14",
"react-native-builder-bob": "0.40.18",
"react-native-harness": "1.0.0-alpha.21",
"react-native-monorepo-config": "0.1.9"
"react-native-monorepo-config": "0.1.10"
},
"engines": {
"node": ">=18"
Expand Down
48 changes: 24 additions & 24 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -60,33 +60,33 @@
"registry": "https://registry.npmjs.org/"
},
"devDependencies": {
"@commitlint/config-conventional": "19.8.1",
"@eslint/compat": "1.3.2",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.35.0",
"@op-engineering/op-sqlite": "15.0.7",
"@react-native-async-storage/async-storage": "2.1.1",
"@react-native-community/cli": "18.0.1",
"@react-native/babel-preset": "0.78.2",
"@react-native/eslint-config": "0.78.2",
"@release-it/conventional-changelog": "10.0.1",
"@commitlint/config-conventional": "20.4.2",
"@eslint/compat": "1.4.1",
"@eslint/eslintrc": "3.3.4",
"@eslint/js": "9.39.3",
"@op-engineering/op-sqlite": "15.2.5",
"@react-native-async-storage/async-storage": "2.2.0",
"@react-native-community/cli": "20.1.2",
"@react-native/babel-preset": "0.83.2",
"@react-native/eslint-config": "0.83.2",
"@release-it/conventional-changelog": "10.0.5",
"@types/jest": "29.5.14",
"@types/react": "19.0.0",
"commitlint": "19.8.1",
"del-cli": "6.0.0",
"eslint": "9.35.0",
"@types/react": "19.2.14",
"commitlint": "20.4.2",
"del-cli": "7.0.0",
"eslint": "9.39.3",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-prettier": "5.5.4",
"eslint-plugin-prettier": "5.5.5",
"jest": "29.7.0",
"lefthook": "2.0.3",
"prettier": "3.0.3",
"react": "19.0.0",
"react-native": "0.78.2",
"react-native-builder-bob": "0.40.16",
"react-native-gesture-handler": "2.25.0",
"release-it": "19.0.4",
"turbo": "2.5.6",
"typescript": "5.9.2"
"lefthook": "2.0.16",
"prettier": "3.4.2",
"react": "19.2.4",
"react-native": "0.83.2",
"react-native-builder-bob": "0.40.18",
"react-native-gesture-handler": "2.30.0",
"release-it": "19.2.4",
"turbo": "2.5.8",
"typescript": "5.9.3"
},
"peerDependencies": {
"@op-engineering/op-sqlite": "*",
Expand Down
21 changes: 8 additions & 13 deletions src/specs/NativeMendixNative.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
import { TurboModuleRegistry, type TurboModule } from 'react-native';
import type { StackFrame } from 'stacktrace-parser';

import {
type EventEmitter,
type Int32,
type Double,
} from 'react-native/Libraries/Types/CodegenTypes';
import type { CodegenTypes } from 'react-native';

export interface Spec extends TurboModule {
encryptedStorageSetItem(key: string, value: string): Promise<void>;
Expand Down Expand Up @@ -49,10 +44,10 @@ export interface Spec extends TurboModule {
errorHandlerHandle(message: string, stackTrace: StackFrame[]): void;

navigationModeIsNavigationBarActive(): boolean;
navigationModeGetNavigationBarHeight(): Double;
navigationModeGetNavigationBarHeight(): CodegenTypes.Double;

readonly onReloadWithState: EventEmitter<void>;
readonly onDownloadProgress: EventEmitter<DownloadProgress>;
readonly onReloadWithState: CodegenTypes.EventEmitter<void>;
readonly onDownloadProgress: CodegenTypes.EventEmitter<DownloadProgress>;
}

export default TurboModuleRegistry.getEnforcing<Spec>('MendixNative');
Expand Down Expand Up @@ -98,12 +93,12 @@ type Configuration = {
* @deprecated
*/
CODE_PUSH_KEY?: string;
NATIVE_BINARY_VERSION?: Int32;
NATIVE_BINARY_VERSION?: CodegenTypes.Int32;
APP_SESSION_ID?: string;
};

type DownloadConfig = {
connectionTimeout?: Int32;
connectionTimeout?: CodegenTypes.Int32;
mimeType?: string;
};

Expand All @@ -122,8 +117,8 @@ type OtaDownloadResponse = {
};

type DownloadProgress = {
receivedBytes: Double;
totalBytes: Double;
receivedBytes: CodegenTypes.Double;
totalBytes: CodegenTypes.Double;
};

export type {
Expand Down
Loading
Loading