
Asynchronous icon loading with on-the-fly Iconify API fetching, multi-server fallback and circuit-breaking backoff; zero bundled assets, global in-memory cache, and easy declarative usage.
An asynchronous icon loading library for Compose Multiplatform that fetches and renders icons on-the-fly directly from the extensive Iconify API ecosystem.
Supports Android, iOS, and Desktop (JVM).
Designed to keep your application sizes incredibly small by eliminating static SVG/vector asset overhead, featuring an automated multi-server fallback architecture with circuit-breaking backoff to ensure zero icon-loading downtime.
Add the dependency to your shared module's commonMain dependencies in build.gradle.kts:
sourceSets {
val commonMain by getting {
dependencies {
implementation("com.ongshok:iconify:1.0.4")
}
}
}Using icons inside your Compose screens is incredibly easy and declarative. Simply provide the standard "prefix:name" format string identifier (e.g., lucide:smile):
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.ongshok.iconify.ui.IconifyIcon
@Composable
fun DashboardScreen() {
// Elegant, single-line asynchronous rendering
IconifyIcon(
icon = "lucide:rocket",
modifier = Modifier.size(64.dp),
tint = Color.Magenta
)
}If you just want to use the public, official Iconify servers, you don't need to configure anything! The library defaults to using https://api.iconify.design and https://api.simplesvg.com automatically.
If you host your own internal Iconify API mirror network, initialize the library once at application startup before rendering any UI:
// In your Android Application class, iOS Main entry, or Desktop main()
Iconify.initialize(
customUrls = listOf(
"https://iconify.mycompany.internal",
"https://api.iconify.design"
)
)To run the desktop demo app and see the icons in action:
./gradlew :app:runTo run the JVM-based tests for the library:
./gradlew :library:jvmTestCopyright 2026 Iconify Compose Authors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
An asynchronous icon loading library for Compose Multiplatform that fetches and renders icons on-the-fly directly from the extensive Iconify API ecosystem.
Supports Android, iOS, and Desktop (JVM).
Designed to keep your application sizes incredibly small by eliminating static SVG/vector asset overhead, featuring an automated multi-server fallback architecture with circuit-breaking backoff to ensure zero icon-loading downtime.
Add the dependency to your shared module's commonMain dependencies in build.gradle.kts:
sourceSets {
val commonMain by getting {
dependencies {
implementation("com.ongshok:iconify:1.0.4")
}
}
}Using icons inside your Compose screens is incredibly easy and declarative. Simply provide the standard "prefix:name" format string identifier (e.g., lucide:smile):
import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import com.ongshok.iconify.ui.IconifyIcon
@Composable
fun DashboardScreen() {
// Elegant, single-line asynchronous rendering
IconifyIcon(
icon = "lucide:rocket",
modifier = Modifier.size(64.dp),
tint = Color.Magenta
)
}If you just want to use the public, official Iconify servers, you don't need to configure anything! The library defaults to using https://api.iconify.design and https://api.simplesvg.com automatically.
If you host your own internal Iconify API mirror network, initialize the library once at application startup before rendering any UI:
// In your Android Application class, iOS Main entry, or Desktop main()
Iconify.initialize(
customUrls = listOf(
"https://iconify.mycompany.internal",
"https://api.iconify.design"
)
)To run the desktop demo app and see the icons in action:
./gradlew :app:runTo run the JVM-based tests for the library:
./gradlew :library:jvmTestCopyright 2026 Iconify Compose Authors
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.