Same issue here. Specifically, on iOS 17 devices, some characters in the query string parameters of axios requests were encoded twice
As noted above, starting with iOS 17, NSUrLs are encoded according to the RFC 3986 format (previously RFC 1738/1808). Axios does not support RFC 3986 yet
I also set a paramsSerializer to resolve this. On iOS 17 and higher, the query string params for axios requests are encoded using the RFC 3986 format, which can be specified using the qs library
import axios from 'axios';
import qs from 'qs';
import { Platform } from 'react-native';
const isIos17OrGreater =
Platform.OS === 'ios' && parseInt(Platform.Version, 10) >= 17;
const instance = axios.create(
isIos17OrGreater
? {
paramsSerializer: (params: any) =>
qs.stringify(params, { format: 'RFC3986' }),
}
: {},
);