{"_id":"react-native-view-recorder","_rev":"7-e7cecc78b0c70b99e1f772dc5bfbef42","name":"react-native-view-recorder","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"react-native-view-recorder","version":"0.1.0","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.1.0","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"09be4d61cdd961ca06fdda1c6e7d43b17e151a55","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.1.0.tgz","fileCount":48,"integrity":"sha512-4Lb2R3smsMWvwSNSBfQ0iQYumRz0JUzIqLR9hSidPhTqrZR+1CGvqC7T7Q/zm24b3f7gqFs7QjxnMA6xtoZlpA==","signatures":[{"sig":"MEUCIAwdj7XvIlfu/iEHUqfX6CJmj4pmdbxW21NfGBeRXz71AiEA/3sLtsOv9mXRAilP4XeaS3rdmAlGLqcDPBEFcRgDQxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":158462},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"a2035bb4a8670fb91d249fe2491192dabee5bfad","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"rednegniw","email":"antonin.wingender@gmail.com"},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.6.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"24.8.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.1.0_1772628575879_0.5850001791028401","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.1":{"name":"react-native-view-recorder","version":"0.1.1","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.1.1","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"403216c8fda6780c64e5a58bab3b7363c60d4fd0","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.1.1.tgz","fileCount":48,"integrity":"sha512-9Nn6tj/VbS2G2QArJu6rjQm1XDQOXi/9wwnZ864b8NuwNbhtjBbNFTlUm437fxPGtSW8qIbmc92rkzkes6m3EQ==","signatures":[{"sig":"MEUCIC93rsegROh1VfbIyFIHhzHfHpBayGA2C5QyvXl60DTvAiEA9/SO1x8lbINsu7Sp4i9ZO8UPL6HgzT0qe2C/ltkC+5Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":159129},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"8f1b936052f13c1f9f23cb08b716acfac7a36280","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.11.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.1.1_1772630735087_0.9332773191002233","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.2.0":{"name":"react-native-view-recorder","version":"0.2.0","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.2.0","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"abf3fd83b273493733122c8496eee8e2f3a87d66","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.2.0.tgz","fileCount":41,"integrity":"sha512-tY+12e9/scQoBjnMsS7OALXmTHBLm2Ey82JjbJADonyKQkdiJ5Pcza6uMgT4JJsQ/he6NXwlKEBPKnP5jOj5fA==","signatures":[{"sig":"MEQCIA0R5ZxMLo8O3wCYAw3K6RkzLXrbUiOfdVHDfMzTnZg4AiAaiTg6G21K4XdcOD+p47pGot/Sgaurn++wYBFYxX/Tzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":125823},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"603a5dd41a2eac74494a3cd2ceed70d008c3e338","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.11.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.2.0_1772657416658_0.6898301398834787","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.3.0":{"name":"react-native-view-recorder","version":"0.3.0","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.3.0","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"09d0fddb2c28c5930fa51bf049ab658ab32ce3b8","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.3.0.tgz","fileCount":41,"integrity":"sha512-KJLLRWmWJDwFk+ZcHG5ayGnb8SclTRdmmWGE6a1oPlyYp3MI9/hAD5irXuwdDiYT/zkxbNzR30StWihkT2HLSA==","signatures":[{"sig":"MEYCIQDvWaurfnULXMlg1xuz7msU2OuOTAXkA8SuDKhr+vcBUQIhAPoGZoaoPOCYN+bKxDsoAfVW4cO8bU16dSBdlwxPsuN8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140220},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"6f3c312499c8d6b072cbfdf04723fcf96e1e6ad3","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.11.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.3.0_1772709858097_0.5036368337541863","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.3.1":{"name":"react-native-view-recorder","version":"0.3.1","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.3.1","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"6f045daed1097bd464e23550ab4ad10b924517f3","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.3.1.tgz","fileCount":41,"integrity":"sha512-qXaD35n+l5SM6vPoRJyJLzuwPXgmqYoK7Gdgdu2iyKFetBAl9fnju538ib3PwHguiSxK0X93TaFQqPOPyCgcJQ==","signatures":[{"sig":"MEYCIQDjN1XzklCAv2Q9SCBpVNgrCTmlyuMzPoM+u3ct/XpurwIhAMKaRdG/UMFm65cdt42LInwoGP7xaKUho+ImoblKaKbM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140365},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./app.plugin":"./app.plugin.js","./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"dfcc7eaedac36bb540a1ddf37403838c704e6130","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.11.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.3.1_1772790967737_0.6147388929541715","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.4.0":{"name":"react-native-view-recorder","version":"0.4.0","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","_id":"react-native-view-recorder@0.4.0","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"dist":{"shasum":"5e8462413d42e907e57cdb2947f6c4248020332d","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.4.0.tgz","fileCount":39,"integrity":"sha512-RJvPKR7nwqC7lynOihDZhIBtpl8NHdGwM6DVhFNOPOrerkWmx4P7HaFXy+Gl5qRsncF7mZLfqu2VVdkMdTMIYQ==","signatures":[{"sig":"MEUCIQD03NGyVJBKobhUZFkqxkem4BR6hQG+kplmNqX9yZ/Y0AIgOKxysbrhNRqdYaLHu4aPbvc+FLXzBXUgu22CZNz+iKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":139699},"main":"./lib/module/index.js","types":"./lib/typescript/index.d.ts","module":"./lib/module/index.js","source":"./src/index.ts","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/index.d.ts","source":"./src/index.ts","default":"./lib/module/index.js","react-native":"./src/index.ts"},"./package.json":"./package.json"},"gitHead":"e9c96f406e64889127b7f56009822c393d9a97b6","scripts":{"lint":"biome check .","test":"jest","prepare":"bob build","lint:fix":"biome check --write .","check-types":"tsc --noEmit","prepublishOnly":"tsc --noEmit && jest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"repository":{"url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","type":"git","directory":"packages/react-native-view-recorder"},"_npmVersion":"11.11.0","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"name":"RNViewRecorderSpec","type":"all","android":{"javaPackageName":"com.reactnativeviewrecorder"},"jsSrcsDir":"./src"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0","ts-jest":"^29.4.6","typescript":"~5.9.2","@types/jest":"^30.0.0","react-native-builder-bob":"^0.40.18"},"peerDependencies":{"expo":">=54.0.0","react":">=18","react-native":">=0.73"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-native-view-recorder_0.4.0_1772963403818_0.3714136625016231","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.4.1":{"name":"react-native-view-recorder","version":"0.4.1","description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","source":"./src/index.ts","main":"./lib/module/index.js","module":"./lib/module/index.js","react-native":"./src/index.ts","types":"./lib/typescript/index.d.ts","exports":{".":{"source":"./src/index.ts","react-native":"./src/index.ts","types":"./lib/typescript/index.d.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"sideEffects":false,"codegenConfig":{"name":"RNViewRecorderSpec","type":"all","jsSrcsDir":"./src","android":{"javaPackageName":"com.reactnativeviewrecorder"}},"repository":{"type":"git","url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","directory":"packages/react-native-view-recorder"},"keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"author":{"name":"Antonin Wingender"},"license":"MIT","bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","engines":{"node":">=18"},"scripts":{"prepare":"bob build","prepublishOnly":"tsc --noEmit && jest","check-types":"tsc --noEmit","test":"jest","lint":"biome check .","lint:fix":"biome check --write ."},"peerDependencies":{"react":">=18","react-native":">=0.73","expo":">=54.0.0"},"peerDependenciesMeta":{"expo":{"optional":true}},"devDependencies":{"@types/jest":"^30.0.0","jest":"^30.0.0","react-native-builder-bob":"^0.40.18","ts-jest":"^29.4.6","typescript":"~5.9.2"},"react-native-builder-bob":{"source":"src","output":"lib","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"gitHead":"7e9c16013fd19087f1fe0c2c1bbb1b12269047a5","_id":"react-native-view-recorder@0.4.1","_nodeVersion":"22.22.1","_npmVersion":"11.12.1","dist":{"integrity":"sha512-mO+mPC6MIg/ax6Itnai/KshqbHAh4EK5nW0CWxpSBy1AtBu/B8IhMNwPkqTmzZU1fh+53gu9sB7Uehs0IyGS2Q==","shasum":"1a8aa1bb558800b8b0331f98f6d4863e671e756b","tarball":"https://registry.npmjs.org/react-native-view-recorder/-/react-native-view-recorder-0.4.1.tgz","fileCount":39,"unpackedSize":139709,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/react-native-view-recorder@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHVkQe/RAU0CXPfb9O8J2is3GQPVM/5BCcJJ/oA3qfqlAiEAzdtkWgrJXtGyRC4Mq2rgHWMhzOZFhJ0QibTRckHB5oA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0f37ddfb-ea7a-435f-a12b-a1271b5d102d"}},"directories":{},"maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-view-recorder_0.4.1_1774878314014_0.5594910279976373"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-04T12:49:35.878Z","modified":"2026-03-30T13:45:14.416Z","0.1.0":"2026-03-04T12:49:36.032Z","0.1.1":"2026-03-04T13:25:35.247Z","0.2.0":"2026-03-04T20:50:16.848Z","0.3.0":"2026-03-05T11:24:18.252Z","0.3.1":"2026-03-06T09:56:07.871Z","0.4.0":"2026-03-08T09:50:03.953Z","0.4.1":"2026-03-30T13:45:14.168Z"},"bugs":{"url":"https://github.com/Rednegniw/react-native-view-recorder/issues"},"author":{"name":"Antonin Wingender"},"license":"MIT","homepage":"https://github.com/Rednegniw/react-native-view-recorder#readme","keywords":["react-native","expo","video","recorder","view-recorder","screen-capture","mp4","skia","mediacodec","avassetwriter","h264","hevc","turbomodule"],"repository":{"type":"git","url":"git+https://github.com/Rednegniw/react-native-view-recorder.git","directory":"packages/react-native-view-recorder"},"description":"Record any React Native view to MP4 video. Captures views (including Skia canvases) frame-by-frame using native APIs and encodes with hardware-accelerated H.264/HEVC. No FFmpeg, no GPL.","maintainers":[{"name":"rednegniw","email":"antonin.wingender@gmail.com"}],"readme":"<h1 align=\"center\">React Native View Recorder</h1>\n\n<p align=\"center\" style=\"font-size: 1.2em;\">\n  Capture any React Native View to a video or an image. Add your own audio. Ideal for creating shareable content in your apps.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/react-native-view-recorder\"><img src=\"https://img.shields.io/npm/v/react-native-view-recorder\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/react-native-view-recorder\"><img src=\"https://img.shields.io/npm/dm/react-native-view-recorder\" alt=\"npm downloads\" /></a>\n  <a href=\"https://github.com/Rednegniw/react-native-view-recorder/actions/workflows/ci.yml\"><img src=\"https://github.com/Rednegniw/react-native-view-recorder/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /></a>\n  <a href=\"https://github.com/Rednegniw/react-native-view-recorder/blob/main/LICENSE\"><img src=\"https://img.shields.io/npm/l/react-native-view-recorder\" alt=\"license\" /></a>\n</p>\n\n<div align=\"center\">\n  <video src=\"https://github.com/user-attachments/assets/69095d1e-0855-441e-9afb-5b98b39fd100\" width=\"300\"></video>\n</div>\n\n## Features\n\n- **View-level capture**: record a specific view, not the entire screen\n- **Works with Skia**: captures `@shopify/react-native-skia` canvases and TextureViews\n- **Hardware-accelerated**: AVAssetWriter on iOS, MediaCodec on Android\n- **Audio support**: mux audio files or generate samples per-frame via JS callback\n- **HEVC support**: H.264, H.265, and HEVC with alpha (iOS)\n- **Snapshots**: capture any view as a PNG or JPEG image (file or base64)\n- **Tiny footprint**: ~90 KB of native code, zero third-party binaries\n- **MIT licensed**: no GPL/LGPL concerns (unlike FFmpeg-based solutions)\n- **New Architecture**: Fabric native component + TurboModule\n\n## Documentation\n\nFor full docs, examples, and API reference, visit **[react-native-view-recorder.awingender.com](https://react-native-view-recorder.awingender.com)**.\n\n## Installation\n\n```bash\n# expo\nnpx expo install react-native-view-recorder\n\n# npm\nnpm install react-native-view-recorder\n\n# bun\nbun add react-native-view-recorder\n```\n\n> Expo Go does not support native modules. You need a [development build](https://docs.expo.dev/develop/development-builds/introduction/).\n\n## Quick start\n\n```tsx\nimport { useState } from \"react\";\nimport { Button, Text, View } from \"react-native\";\nimport * as FileSystem from \"expo-file-system\";\nimport { RecordingView, useViewRecorder } from \"react-native-view-recorder\";\n\nexport default function App() {\n  const recorder = useViewRecorder();\n  const [frame, setFrame] = useState(0);\n\n  const handleRecord = async () => {\n    await recorder.record({\n      output: FileSystem.cacheDirectory + \"video.mp4\",\n      fps: 30,\n      totalFrames: 150,\n      onFrame: async ({ frameIndex }) => setFrame(frameIndex),\n    });\n  };\n\n  return (\n    <View style={{ flex: 1, alignItems: \"center\", justifyContent: \"center\" }}>\n      <RecordingView\n        sessionId={recorder.sessionId}\n        style={{ width: 300, height: 200, backgroundColor: \"#111\" }}\n      >\n        <Text style={{ color: \"#fff\", fontSize: 48 }}>{frame}</Text>\n      </RecordingView>\n\n      <Button title=\"Record 5s\" onPress={handleRecord} />\n    </View>\n  );\n}\n```\n\n## Snapshot\n\nCapture a single frame as an image:\n\n```tsx\nconst uri = await recorder.snapshot({\n  output: FileSystem.cacheDirectory + \"photo.png\",\n  format: \"png\",\n});\n```\n\nWorks with the same `RecordingView`, no extra setup needed. Supports PNG, JPEG, custom dimensions, and base64 output.\n\n## Skia support\n\nRecord Skia canvases with the same `RecordingView` and `useViewRecorder`:\n\n```tsx\nimport { Canvas, Circle, Fill } from \"@shopify/react-native-skia\";\nimport { RecordingView, useViewRecorder } from \"react-native-view-recorder\";\n\nfunction SkiaExample() {\n  const recorder = useViewRecorder();\n\n  return (\n    <RecordingView sessionId={recorder.sessionId} style={{ width: 300, height: 300 }}>\n      <Canvas style={{ flex: 1 }}>\n        <Fill color=\"black\" />\n        <Circle cx={150} cy={150} r={100} color=\"cyan\" />\n      </Canvas>\n    </RecordingView>\n  );\n}\n```\n\n## Sponsoring\n\nIf this library helps you, particularly if you are a big company, consider [sponsoring me](https://github.com/sponsors/Rednegniw). Helps a ton, thank you!\n\n## License\n\nMIT\n","readmeFilename":"README.md"}