---
changelog:
  category: Release
  version: files-sdk@3.1.2
date: '2026-10-24T00:19:45Z'
seo:
  description: >-
    files-sdk/appwrite now lists 1,000 files per page by default instead of 100,
    and no longer asks Appwrite to compute a total count it never used, so
    walking a…
title: files-sdk@3.1.2
type: changelog
---
## Patch Changes

- 20b8c5b: `files-sdk/appwrite` now lists 1,000 files per page by default instead of 100, and no longer asks Appwrite to compute a total count it never used, so walking a large bucket with `listAll()` takes far fewer round trips. An explicit `limit` still sets the page size, and cursor pagination is unchanged.
- e401650: Add a Railway Buckets adapter (`files-sdk/railway`). Railway Buckets are private, Tigris-backed, S3-compatible storage, and `railway()` wraps the `s3()` adapter with Railway's defaults: the `https://t3.storageapi.dev` endpoint, the `"auto"` signing region, and `"Railway Buckets error"` provider labels. It reads the variables `railway bucket credentials` prints (`AWS_S3_BUCKET_NAME`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_ENDPOINT_URL`, and `AWS_S3_URL_STYLE`, which switches older buckets to path-style addressing), so it takes no options once a service has them. Credentials never fall back to the AWS credential chain, so a shared AWS profile or instance role can't sign Railway requests. Railway buckets have no public URLs, so `url()` presigns unless `publicBaseUrl` points at a proxy in front of the bucket. Available to the CLI and MCP server as `--provider railway`.
