diff --git a/README.md b/README.md
index 909cd8e..72a6954 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,6 @@
A powerful React Native library for accessing local music files and getting full metadata. Built with React Native's New Architecture (TurboModules) for optimal performance.
-

@@ -18,15 +17,15 @@ A powerful React Native library for accessing local music files and getting full
## ✨ Features
-- 🎵 **Rich Metadata** - Access local music with full metadata including lyrics
+- 🎵 **Rich Metadata** - Access local music with full metadata including lyrics, bitrate, sample rate, and more
- 🚀 **TurboModules** - Built with React Native's New Architecture for maximum performance
-- 📄 **Pagination** - Efficient handling of large music collections
+- 📄 **Pagination** - Cursor-based pagination for efficiently handling large music collections
- 🔍 **Flexible Sorting** - Multiple sorting options for tracks, albums, and artists
-- 📁 **Directory Filtering** - Filter music by specific directories
+- 📁 **Directory Filtering** - Filter tracks by specific directories (Android)
- 🔄 **TypeScript** - Full type definitions and type safety
- 🎨 **Album Artwork** - Support for album artwork and cover images
-- 🤖 **Android Support** - Full native Android implementation
-- 📱 **iOS Support** - Coming soon
+- 🤖 **Android** - Full native Android implementation
+- 🍎 **iOS** - Full native iOS implementation via MediaPlayer framework
## 🚀 Quick Start
@@ -38,31 +37,234 @@ npm install @nodefinity/react-native-music-library
yarn add @nodefinity/react-native-music-library
```
+### Permissions
+
+**Android** — add to `android/app/src/main/AndroidManifest.xml`:
+
+```xml
+
+
+```
+
+**iOS** — add to `Info.plist`:
+
+```xml
+
NSAppleMusicUsageDescription
+
This app needs access to your music library.
+```
+
### Basic Usage
```js
-import { getTracksAsync, getAlbumsAsync, getArtistsAsync } from '@nodefinity/react-native-music-library';
+import {
+ getTracksAsync,
+ getAlbumsAsync,
+ getArtistsAsync,
+} from '@nodefinity/react-native-music-library';
-// Get tracks
-const tracks = await getTracksAsync();
+// Get first 20 tracks sorted by title
+const result = await getTracksAsync({ sortBy: ['title', true] });
+console.log(result.items); // Track[]
+console.log(result.hasNextPage); // boolean
+console.log(result.endCursor); // string | undefined
-// Get albums with sorting
-const albums = await getAlbumsAsync({
- sortBy: ['title', true], // Sort by title ascending
- first: 50
+// Get next page
+const nextPage = await getTracksAsync({
+ sortBy: ['title', true],
+ first: 20,
+ after: result.endCursor,
});
+```
+
+## 📖 API
-// Get artists
-const artists = await getArtistsAsync();
+### `getTracksAsync(options?)`
+
+Returns a paginated list of tracks from the music library.
+
+```ts
+getTracksAsync(options?: TrackOptions): Promise
>
```
-### Android Permissions
+**TrackOptions**
-Add to `android/app/src/main/AndroidManifest.xml`:
+| Property | Type | Default | Description |
+| ----------- | -------------------------------------------------------- | ----------- | --------------------------------------- |
+| `first` | `number` | `20` | Max number of items to return |
+| `after` | `string` | — | Cursor from previous page's `endCursor` |
+| `sortBy` | `TrackSortByKey \| [TrackSortByKey, boolean] \| (...)[]` | `'default'` | Sort key, or tuple `[key, ascending]` |
+| `directory` | `string` | — | Filter by directory path (Android only) |
-```xml
-
-
+**TrackSortByKey**: `'default' \| 'title' \| 'artist' \| 'album' \| 'duration' \| 'createdAt' \| 'modifiedAt' \| 'fileSize'`
+
+---
+
+### `getTrackMetadataAsync(trackId)`
+
+Returns detailed audio metadata for a single track.
+
+```ts
+getTrackMetadataAsync(trackId: string): Promise
+```
+
+---
+
+### `getTracksByAlbumAsync(albumId)`
+
+Returns all tracks in an album (no pagination).
+
+```ts
+getTracksByAlbumAsync(albumId: string): Promise