{"id":42102,"library":"tinylicious","title":"Tinylicious","description":"Tinylicious is a minimal, in-memory reference implementation of the Fluid Framework routerlicious service, intended for local development, testing, and debugging. Version 7.0.1 targets Node >=14 and ships TypeScript types. It provides a lightweight alternative to running a full Azure Fluid Relay or Routerlicious server, with no external dependencies beyond Node.js. Ideal for developers building Fluid Framework applications who need a quick local server without cloud infrastructure. Note that Tinylicious is not production-ready and lacks persistence, scaling, or security features.","status":"active","version":"7.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/microsoft/FluidFramework","tags":["javascript","typescript"],"install":[{"cmd":"npm install tinylicious","lang":"bash","label":"npm"},{"cmd":"yarn add tinylicious","lang":"bash","label":"yarn"},{"cmd":"pnpm add tinylicious","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"This package is ESM-only starting from v2.","wrong":"const TinyliciousServer = require('tinylicious');","symbol":"TinyliciousServer","correct":"import { TinyliciousServer } from 'tinylicious';"},{"note":"ITestFluidDataStore is a type; use import type for better tree-shaking and ESM compatibility.","wrong":"import { ITestFluidDataStore } from 'tinylicious';","symbol":"ITestFluidDataStore","correct":"import type { ITestFluidDataStore } from 'tinylicious';"},{"note":"TinyliciousClient is a named export, not the default export (there is no default export).","wrong":"import TinyliciousClient from 'tinylicious';","symbol":"TinyliciousClient","correct":"import { TinyliciousClient } from 'tinylicious';"}],"quickstart":{"code":"import { TinyliciousServer } from 'tinylicious';\n\nconst server = new TinyliciousServer({\n  port: parseInt(process.env.PORT ?? '7070'),\n});\n\nawait server.start();\n\nconsole.log(`Tinylicious server running on port ${server.port}`);\n\n// stop the server later if needed:\n// await server.close();","lang":"typescript","description":"Starts a local Tinylicious server on the specified port (default 7070) using ESM imports."},"warnings":[{"fix":"Use Tinylicious only for development/testing. For persistent storage, use Azure Fluid Relay or customize Routerlicious.","message":"Tinylicious stores all data in memory; restarting the server loses all state.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use import syntax or update to ESM-compatible code. Add \"type\": \"module\" to package.json if using Node <16.","message":"In version 2.0.0, Tinylicious switched from CommonJS to ESM only. require() usage will fail.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"When constructing TinyliciousServer, pass an object with `port: number` (not a string or nested object).","message":"In version 7.0.0, TinyliciousServer constructor signature changed: options object now requires explicit port as number.","severity":"breaking","affected_versions":">=7.0.0"},{"fix":"Always use a production-grade service (Azure Fluid Relay or Routerlicious) for production applications.","message":"Tinylicious is not intended for production; it lacks authentication, authorization, and persistence.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Replace ITestFluidDataStore with your own data store type using Fluid Framework's DataObject pattern.","message":"ITestFluidDataStore type is deprecated and will be removed in v8. Use a custom Fluid object or FluidClient instead.","severity":"deprecated","affected_versions":">=7.0.0"}],"env_vars":null,"search_vec":"'14':28 '7.0.1':25 'altern':37 'applic':60 'azur':42 'beyond':52 'build':57 'cloud':68 'debug':23 'depend':51 'develop':20,56 'extern':50 'featur':84 'fluid':13,43,58 'framework':14,59 'full':41 'ideal':54 'implement':10 'in-memori':6 'infrastructur':69 'intend':17 'javascript':85 'lack':79 'lightweight':36 'local':19,65 'memori':8 'minim':5 'need':62 'node':27 'node.js':53 'note':70 'persist':80 'product':76 'production-readi':75 'provid':34 'quick':64 'readi':77 'refer':9 'relay':44 'routerlici':15,46 'run':39 'scale':81 'secur':83 'server':47,66 'servic':16 'ship':30 'target':26 'test':21 'tinylici':1,2,72 'type':32 'typescript':31,86 'version':24 'without':67","created_at":"2026-06-04T18:55:37.717465+00:00","updated_at":"2026-06-04T18:55:37.717465+00:00","problems":[{"fix":"Use import statement (ESM) or downgrade to tinylicious@1.x. If using Node <14, upgrade Node and add \"type\": \"module\" to package.json.","cause":"Older version using require() but Tinylicious >=2.0.0 is ESM-only.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module 'tinylicious' from ... not supported."},{"fix":"Use named import: import { TinyliciousServer } from 'tinylicious';","cause":"Importing TinyliciousServer incorrectly, possibly as a default import or with require().","error":"TypeError: TinyliciousServer is not a constructor"},{"fix":"Kill the process on port 7070 or set a different port via environment variable (PORT).","cause":"Port 7070 is already in use by another process.","error":"Failed to start Tinylicious: listen EADDRINUSE :::7070"},{"fix":"Run npm install tinylicious@latest. Ensure tsconfig.json has \"moduleResolution\": \"node\" or \"node16\" and \"esModuleInterop\": true.","cause":"Package not installed or TypeScript not configured to resolve node modules properly.","error":"Cannot find module 'tinylicious' or its corresponding type declarations."}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://fluidframework.com","github":"https://github.com/microsoft/FluidFramework","docs":null,"changelog":null,"pypi":null,"npm":"tinylicious","openapi_spec":null,"status_page":null,"smithery":null,"categories":["testing"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-04","next_check":"2026-09-02","install_tag":null}}